具有多个状态的Flutter Single Statefullwidget

时间:2019-06-25 07:00:22

标签: android flutter dart

我想问一下您对此的看法...

在创建有状态的窗口小部件时,我们需要为其创建状态。当我需要更改多个小部件时,这很烦人。 我想创建一个更简单的方法来创建一个Statefullwidget,但是创建多个State…。 基本上是这样的:

class MyWidget extends StatefullWidget {
    final State<MyWidget> state;
    MyWidget({this.state});
}

abstract MyStatefull extends State<MyWidget> {
}

然后,我要创建的每个statefullwidget都将扩展此MyStatefull类……。

这是一个好方法吗?如果有任何缺陷,请告诉我…。 谢谢...

3 个答案:

答案 0 :(得分:1)

那行不通。

使用这样的代码,您可能会发现在小部件树中进行了某些更新(热重载,键盘打开等)后,您失去了MyState.state的状态

不仅如此,您的自定义context的属性State也将永远不会被设置,而且您会错过Flutter的某些运行状况检查。

在某种程度上可行,但不使用State。您可以使用模仿State行为的自定义类,并让 actual State类将其实现委托给您的自定义类。

软件包provider在内部以名称DelegateWidgetStateDelegate来完成。

该实现可用here

答案 1 :(得分:-1)

如果主要目的是简化语法,我认为这不是正确的方法。您可以查看使用VSCode或Android Studio(VSCode中的stful)自动生成有状态的窗口小部件的代码片段。您可以查看的其他内容是Flutter Hooks(基于React Hooks),在处理有状态小部件时,它可以简化很多代码。

答案 2 :(得分:-1)

从理论上讲可能很好,但是也许值得检查如何使用混合而不是继承。