我可以一步一步定义状态

哈桑·优素福

Flutter所述StatefulWidget需要插件在2个步骤中定义,首先定义一类扩展StatefulWidget,如:

class Counter extends StatefulWidget {
  @override
  _CounterState createState() => new _CounterState();
}

然后是扩展State前一个的类的类,例如:

class _CounterState extends State<Counter> {
  int _counter = 0;

  void _increment() {
    setState(() {
      ++_counter;
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Row(children: <Widget>[
      ...
    ]);
  }
}

没有一种方法可以createState()StatefulWidget类中定义而不需要定义单独的State

我尝试以此为起点,但不知道下一步该怎么做

class Counter extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return ????
  }
}
雷米·罗素(Remi Rousselet)

简短的回答是:不,你不能。

但为什么 ?实际上,这很容易理解。在flutter中,每次您都想使用您要执行的小部件new MyWidget(...)注意单词new这意味着您每次更新窗口小部件树时都实例化一个新对象。但这也意味着,每次更新时,小部件都会得到很好的硬重置防止您在窗口小部件中存储任何可变数据。


但是,有状态窗口小部件如何工作?

看到createState第一部分了吗?在您的小部件的第一个实例化时,它将被调用。然后将其缓存在较低的一层中。

这样,下次您实例化窗口小部件时,状态将从缓存中获取,因此保留其自定义值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章