gpt4 book ai didi

listview - Flutter ListView 没有更新

转载 作者:IT王子 更新时间:2023-10-29 06:35:57 28 4
gpt4 key购买 nike

我想在 Flutter 中创建一个在新数据到达时更新的 ListView。我正在使用触发列表加载以进行测试的 RefreshIndicator。对于我的列表,我使用 ListBuilder 将我的对象映射到 View 对象。

据我所知,setState() 应该触发对我的列表的更新,但它没有。

调试显示我的 _listContent 在调用 setState() 回调后实际上填充了 72 个项目。为什么我的列表不自动更新?我错过了什么吗?

class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);

final String title;

@override
_MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
List<Manga> _listContent = new List<Manga>();

void _addMangas(List<Manga> mangas) {
setState(() {
_listContent.addAll(mangas);
print('Cleared list');
});
}

Future<Null> _onRefresh() {
Completer<Null> completer = new Completer<Null>();

loadMangaItems().then((mangas) => _addMangas(mangas));
completer.complete();

return completer.future;
}

return new Scaffold(
appBar: new AppBar(

title: new Text(widget.title),
),
body: new RefreshIndicator(
child: new ListView.builder(
itemCount: _listContent.length,
itemBuilder: (BuildContext ctx, int index) {
Manga manga = _listContent[index];
return new MangaItem(
name: manga.writtenName,
number: manga.currentNr,
state: false,
);
}),
onRefresh: _onRefresh),
);
}
}

最佳答案

原来是这个问题

List<Manga> _listContent = new List<Manga>();

是在 widget.build 之上定义的,而不是在 State 类之上。像这样定义它工作正常:

class _MyHomePageState extends State<MyHomePage> {
List<Manga> _listContent = new List<Manga>();

@override
Widget build(BuildContext context) {
...
}

关于listview - Flutter ListView 没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45648784/

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