我查看了dart的泛型文档。
abstract class StringCache {
String getByKey(String key);
void setByKey(String key, String value);
}
abstract class ObjectCache {
Object getByKey(String key);
void setByKey(String key, Object value);
}
上面的两个被下面的代码替换为一个通用类型T
abstract class Cache<T> {
T getByKey(String key);
void setByKey(String key, T value);
}
可以清楚地看到T
的使用。但不确定状态类在哪里使用
class _CounterState extends State<Counter> {
int _counter = 0;
void _increment() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
RaisedButton(
onPressed: _increment,
child: Text('Increment'),
),
Text('Count: $_counter'),
],
);
}
}
答案 0 :(得分:1)
T
是通用类型参数,而extends StatefulWidget
是可以设置T
类型的约束。
使用
class _CounterState extends State<Counter> {
T
设置为类型Counter
(必须为StatefulWidget
)。
通过传递Counter
作为类型可以使用
widget.foo
从foo
引用Counter
中的_CounterState
字段,您将获得自动补全和静态类型检查。