我想在Flutter中创建一个ListView,在新数据到达时进行更新。我正在使用触发列表加载进行测试的RefreshIndicator。对于我的列表,我正在使用ListBuilder将我的对象映射到查看对象。Flutter ListView没有更新
从我的理解,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),
);
}
}
我对RefreshCallback(_onRefresh())的实现有个问题。不是'completer.complete();'在* loadMangaItems()完成之前被调用? – sidecarcat