gpt4 book ai didi

flutter - 该类(或该类继承的类)被标记为 '@imutable',但其一个或多个实例字段不是最终的

转载 作者:行者123 更新时间:2023-12-03 04:23:28 25 4
gpt4 key购买 nike

我在无状态小部件中的Android Studio中收到此警告

This class (or a class which this class inherits from) is marked as '@imutable' but one or more of its instance fields are not final



当我想在build方法之外创建变量时。我如何摆脱这个警告...或者我做错了什么?

可复制的代码
class TestScreen extends StatelessWidget {
final List<Map<String, dynamic>> list = [
{'id': 1, 'name': 'name1'},
{'id': 2, 'name': 'name2'}
];
List<int> _ids = [];
@override
Widget build(BuildContext context) {
_ids.clear();
return Scaffold(
body: Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: list.length,
itemBuilder: (BuildContext context, int index) {
_ids.add(list[index]['id']);
return ListTile(
title: Text(list[index]['name']),
);
}),
),
FlatButton(
child: Text('Print all ids'),
onPressed: () {
print(_ids.toString());
},
)
],
),
);
}
}

该警告消息的和平

enter image description here

最佳答案

您必须将两个列表都标记为最终。您仍然可以从列表中添加和删除元素,但是不能重新初始化它们。

您可以

list.add('c')

您不能
list = ['apple']

在您的情况下,正确的代码应如下所示:
class Test extends StatelessWidget {
Final List<String> list = ['a', 'b'];
Final List<int> _ids = [];

关于flutter - 该类(或该类继承的类)被标记为 '@imutable',但其一个或多个实例字段不是最终的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61201834/

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