【发布时间】:2020-05-24 18:54:06
【问题描述】:
我有一个无状态小部件,在编写代码时,我在无状态小部件中使用了一个非最终字段,并且 ide 不断给我警告all the fields in stateless widget should be final
但我不明白为什么在无状态小部件中有一个非最终字段是个问题。
我认为拥有非最终字段应该很好,因为可能有一个我们以后不想修改的字段但是这个字段只能在构造函数内部初始化,所以你需要使用非最终字段
示例:
class Temp extends StatelessWidget {
final int a;
final int b;
int c;
temp({this.a, this.b}) {
this.c = this.a + this.b;
}
@override
Widget build(BuildContext context) {}
}
在上面的小部件中,我无法将 c 设为 final,因为它是在构造函数中初始化的,即使我以后不打算更改 c 变量。
如果在无状态小部件中具有非最终字段不是一个好主意,那么如何处理上述情况。
注意:我不能使用Constructor() : [initialization] {},因为初始化可能涉及函数或循环
【问题讨论】:
-
如果无状态小部件不能满足您的需求,请使用 StatedfulWidget。
-
我能做到。但我没有使用任何 StateFulWidget 功能。这没有意义
-
用a、b、c创建一个数据模型,并将数据模型传递给StatelessWidget怎么样?
-
我不了解数据模型。你能提供一个信息链接吗?
-
只是一个包含三个成员的类:a、b、c
标签: flutter widget final stateless