State <t extends =“” statefulwidget =“”>的用途是什么

时间:2019-03-14 05:28:27

标签: java oop dart flutter

我查看了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'),
      ],
    );
  }
}

1 个答案:

答案 0 :(得分:1)

T是通用类型参数,而extends StatefulWidget是可以设置T类型的约束。

使用

class _CounterState extends State<Counter> {

T设置为类型Counter(必须为StatefulWidget)。

通过传递Counter作为类型可以使用

widget.foo

foo引用Counter中的_CounterState字段,您将获得自动补全和静态类型检查。