我想问一下您对此的看法...
在创建有状态的窗口小部件时,我们需要为其创建状态。当我需要更改多个小部件时,这很烦人。 我想创建一个更简单的方法来创建一个Statefullwidget,但是创建多个State…。 基本上是这样的:
class MyWidget extends StatefullWidget {
final State<MyWidget> state;
MyWidget({this.state});
}
abstract MyStatefull extends State<MyWidget> {
}
然后,我要创建的每个statefullwidget都将扩展此MyStatefull
类……。
这是一个好方法吗?如果有任何缺陷,请告诉我…。 谢谢...
答案 0 :(得分:1)
那行不通。
使用这样的代码,您可能会发现在小部件树中进行了某些更新(热重载,键盘打开等)后,您失去了MyState.state
的状态
不仅如此,您的自定义context
的属性State
也将永远不会被设置,而且您会错过Flutter的某些运行状况检查。
在某种程度上可行,但不使用State
。您可以使用模仿State
行为的自定义类,并让 actual State
类将其实现委托给您的自定义类。
软件包provider在内部以名称DelegateWidget
和StateDelegate
来完成。
该实现可用here
答案 1 :(得分:-1)
如果主要目的是简化语法,我认为这不是正确的方法。您可以查看使用VSCode或Android Studio(VSCode中的stful
)自动生成有状态的窗口小部件的代码片段。您可以查看的其他内容是Flutter Hooks(基于React Hooks),在处理有状态小部件时,它可以简化很多代码。
答案 2 :(得分:-1)
从理论上讲可能很好,但是也许值得检查如何使用混合而不是继承。