Flutter ListView 与 List 中的小部件不会在应该更新时更新
Posted
技术标签:
【中文标题】Flutter ListView 与 List 中的小部件不会在应该更新时更新【英文标题】:Flutter ListView with widgets in a List doesn't updates when it should 【发布时间】:2020-08-01 01:44:39 【问题描述】:我正在尝试在全局列表中存储要由 ListView 构建的小部件,如下所示:
List<Widget> globalList= [];
我试图在有状态类的状态下构建一个 Listview,如下所示:
ListView(
children: globalList
)
现在我每次都尝试渲染这个 Listview,当一个项目被添加到列表中时。我用于此的功能是:
void addList()
setState(()
Widget _widget = new Widget();
list.add(_widget);
);
小部件(在我的伪代码中称为_widget
)也是一个有状态小部件。但是当我调用addList
时,我的有状态小部件不会更新。为什么?
短(伪)-代码:
List<Widget> globalList = [];
class STFUL extends StatefulWidget
@override
_STFULState createState() => _STFULState();
class _STFULState extends State<STFUL>
void addList()
setState(()
Widget _widget = new Widget();
globalList.add(_widget);
);
@override
Widget build(BuildContext context)
return Scaffold(
body:ListView(
children: globalList
)
下面有一个按钮可以调用addList。我的问题是,当我调用 setState 时,ListView 不会呈现更新的列表。
感谢您的帮助
【问题讨论】:
【参考方案1】:使用ListView.Builder
代替您的ListView
,
【讨论】:
是的,你是对的。只需获取 itemCount 属性的列表长度,然后在构建器中返回 globalList[i]。非常感谢您的提示!以上是关于Flutter ListView 与 List 中的小部件不会在应该更新时更新的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中自动滚动 Listview.separated 中的所有 List Tiles?
Flutter:在 ListView Builder 中使用 Hero 动画
Flutter - 如何更新用于构建 ListView 的 Future/List 的状态(或值?)(通过 FutureBuilder)