所以,我目前正在尝试使用 listview.builder 在我的应用程序中动态构建一个列表。我最初计划发送一个 http 请求来一次只加载几个项目,但是我在使用 futurebuilder 和 listview builder 时遇到了很多麻烦。这个想法是,如果用户滚动到底部,则会加载更多项目。现在我正在使用流构建器,后端一次发送所有项目,我认为这是低效的,但是因为我没有从流构建列表的经验,所以我无法确定。无论如何,我想要一些动态构建长列表的建议。
1 回答
0
最好的方法是使用 ListView.builder。要使用 ListView.builder,您必须通过使用 new 调用其构造函数来创建它的实例,它需要多个参数。假设我们的应用程序中有一个这样的全局列表
List<String> litems = ["1","2","Third","4"];
使用 LIstView.builder,相同的代码应如下所示
body: new ListView.builder
(
itemCount: litems.length,
itemBuilder: (BuildContext ctxt, int index) {
return new Text(litems[index]);
}
)
在这里,就地回调函数会被调用 4 次,每次调用都会生成一个 Text Widget,它会显示在 body 中。
您还可以编写一个单独的函数,该函数可以从 itemBuilder 调用为
// A Separate Function called from itemBuilder
Widget buildBody(BuildContext ctxt, int index) {
return new Text(litems[index]);
}
body: new ListView.builder
(
itemCount: litems.length,
itemBuilder: (BuildContext ctxt, int index) =>
buildBody(ctxt, index)
),
在这两种情况下,输出看起来都是一样的。如果您希望每次在应用程序中加载小部件时都显示动态(不同)内容,您还可以在无状态小部件中使用 ListView.builder(..)。使用有状态的小部件,它可以动态地改变屏幕的内容。我希望这有帮助
于 2019-09-21T23:28:21.540 回答