我是一个完全的Flutter初学者。当屏幕首次加载时,getOnlineClass()
功能会正确加载数据。但当我尝试更新UI的值时,会加载新数据,但UI不会更新。
return RefreshIndicator(
onRefresh: () {
return dataLoader.loadOnlineClass().then((value) => (value){
print(value);
listDummy = PersistenceHelper().getOnlineClass();
setState(() {
print(listDummy.toString());
});
});
},
child: FutureBuilder(
future: listDummy, // async work
builder: (BuildContext context, AsyncSnapshot snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Text('Loading....');
default:
if (snapshot.hasError)
return Text('Error: ${snapshot.error}');
else
// print(snapshot.data);
return _listShowerTest(snapshot.data);
}
},
),
);
这似乎是一个拼写错误。
你已经给出
return dataLoader.loadOnlineClass().then((value) => (value){
但是你应该这样使用它。
return dataLoader.loadOnlineClass().then((value) {
删除第二个(value)
部分,因为当你把它放在那里时,你正在创建一个使用单个参数的新函数。就像这个(value) {}
。
所以,固定代码将是
onRefresh: () {
return dataLoader.loadOnlineClass().then((value) {
print(value);
listDummy = PersistenceHelper().getOnlineClass();
setState(() {
// Also you should do some actual state setting here.
print(listDummy.toString());
});
});
},