这是一个初学者的问题,关于更新一个小部件的属性。但我很难找到一个答案,在论坛上关于以下内容:在一个外部类(b1)中,我将小部件的属性存储在一个列表(tileListe)中,构建方法如下所示:
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: b1.tileList,
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
b1.tileList[12].text= 'abc'; // Does not update
b1.tileList[12].pos.y = 10.0; // Does not update
b1.tileList.removeAt(0); // Updates when Button is pushed
});
},
child: const Icon(Icons.remove),
),
);
}
tileList中的小部件配备了一个ValueKey(〈〉),其中从1开始计数。注意列表的键和索引不会相互干扰。
我想更新第一个(设置文本为abc)和第二个(设置索引为12的小部件的y位置为10)属性,并立即看到更改。但这只有在Andriod Studio的“热重启”之后才会发生。
相比之下,第三个命令(删除索引为0的小部件)会立即更新。第一个和第二个命令到第三个命令在可见更新行为方面有什么不同?如何让所有三个更改都直接可见?
1条答案
按热度按时间goqiplq21#
假设
tileList
包含Widget
,通过在build()
中调用setState()
,您将不会从b1.titleList
重建这些小部件。(<your-type-of-titleList>
中-创建刷新单个对象可能性b1
-迭代整个列表并重建titleLists childreen(flutter在此类操作中非常有效)build()
中-调用创建的refreshList()
以应用listTitles子目录中的所有更改希望能有所帮助。我写这个没有IDE,所以我可能会犯一些错误。问是什么不清楚。干杯!