gpt4 book ai didi

flutter - 无状态 flutter 小部件中的非最终字段

转载 作者:行者123 更新时间:2023-12-03 17:26:35 25 4
gpt4 key购买 nike

我有一个无状态小部件,在编写代码时,我在无状态小部件中使用了一个非最终字段,IDE 不断警告我 all the fields in stateless widget should be final
但我不明白为什么在无状态小部件中有一个非最终字段是一个问题。

我认为拥有非 final 字段应该完全没问题,因为可能有一个我们不想稍后修改的字段,但该字段只能在构造函数内部初始化,因此您需要使用 non-final field

例子:

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因为它是在构造函数内部初始化的,所以即使我没有计划更改 c future 的变数。

如果在无状态小部件中使用非最终字段不是一个好主意,那么如何处理上述情况。

备注 : 我不能使用 Constructor() : [initialization] {}因为初始化可能涉及函数或循环

最佳答案

StatelessWidget 类 一个不需要可变状态的小部件,因此该类被标记为@immutable,Dart 语言会尽力修复您的错误,因此“final”关键字只会警告您,但不会停止编译,您可以如果您确定它会初始化一次并且不会在运行时再次更改,则通常不使用 final 关键字使用您的代码..

这是在 Dart 语言中定义常量有 2 个关键字(final,const)的主要原因

final 和 const 都可以防止变量被重新分配。

const 值必须在编译时知道,constbirth = "2020/02/09"。初始化后不可更改

最后 值必须在运行时知道,最终出生 = getBirthFromDB()。初始化后不可更改

关于flutter - 无状态 flutter 小部件中的非最终字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60133733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com