我有一个ListView.separated
,最初包含两个有状态的小部件,分别为:Hello 2
和Hello 3
。
一段时间后,我想在Hello 1
的顶部插入一个有状态的窗口小部件,上面写着ListView.separated
。
我希望ListView.separated
显示Hello 1
,Hello 2
,Hello 3
。
不幸的是,当我这样做时,Hello 3
被复制了,而不是Hello 1
被添加到了ListView.separated
的顶部。现在显示Hello 2
,Hello 3
,Hello 3
。
如果我使用无状态窗口小部件,那么所有这些都可以正常工作。如果我使用StatefulWidget
,则订单会混乱,小部件也会重复。
答案 0 :(得分:0)
您可以尝试一下。
bool _condition = false;
Widget build(context) {
return ListView(
children: <Widget>[
_condition ? yourNewWidget : Container(),
ListView.separated(
shrinkWrap: true, // needed
physics: ClampingScrollPhysics(), // needed
itemBuilder: (c, i) => Text("Text = ${i}"),
separatorBuilder: (c, i) => Divider(),
itemCount: 100,
)
],
)
}
准备好newWidget
后,请确保调用setState(())
来更新build()
方法。