不可变的StatefulWidget,和Flutter中的State有什么用处,但是只能做一个没有状态的可变StatefulWidget

Uda*_*ghe 7 dart flutter

为什么flutter 是用两个独立的immutable StatefulWidgetmutable State关联的呢?但是是否有可能创建一个可变 StatefulWidget类并在其中管理状态?我认为实现这两个类以创建 StatefulWidget.

向我解释这两个类的实际用法。

Rém*_*let 7

不,这是不可能的。StatefulWidgets 被分成 2 个类,因为其中一部分是完全不可变的。Widget子类不能存储任何可变字段。

我们不是在 React 中,“组件”是可变的,并且实例在组件的整个生命周期中都保持不变。

在 Flutter 中,小部件的生命周期很短。每次我们想要修改一些东西时,我们都会创建一个新的小部件实例。


然而,反转 State 和 StatefulWidget 之间的生命周期很容易。并将“拆分为两个类”隐藏在抽象接口下

class Foo extends SimpleStateWidget<int> {
  @override
  int initState(BuildContext context, SetState<int> setState) {
    return 42;
  }

  @override
  Widget build(BuildContext context, SetState<int> setState, int state) {
    return RaisedButton(
      onPressed: () => setState(state + 1),
      child: Text(state.toString()),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

如果那是你的事,界面如下:

class Foo extends SimpleStateWidget<int> {
  @override
  int initState(BuildContext context, SetState<int> setState) {
    return 42;
  }

  @override
  Widget build(BuildContext context, SetState<int> setState, int state) {
    return RaisedButton(
      onPressed: () => setState(state + 1),
      child: Text(state.toString()),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)