我有两个名为getAllContacts()的函数,这些函数将从mobile和upDateAllContacts()获取所有联系人,后者使用联系人号码创建小部件,并将其附加到名为registerdUsers = []的列表中,并在列中使用registedUser小部件。
问题是除非我导航到另一个屏幕然后返回,否则小部件不可见。
List registeredUsers = <Widget>[];
class ...{
...
@override
initState() {
getAllContacts() //It greps all the contacts from mobile
upDateAllContacts()//contacts to create widgets which goes in to registeredUsers list
super.initState();
}
@override
Widget build(BuildContext context) {
...
column {
children :registeredUsers,
}
...
}
}
最佳答案
使您的函数getAllContacts
返回Future并使用 FutureBuilder
呈现小部件。每当Future的状态更改或发生错误时,FutureBuilder都会将其称为 build
回调,该回调返回适当的小部件。
该代码将如下所示:
FutureBuilder(
// Assuming loadAllContacts returns Future<Contacts>
future: loadAllContacts(),
// This callback will be called whenever future's state changes
builder: (BuildContext context, AsyncSnapshot<Contacts> snapshot) {
if (snapshot.hasData) {
return ListView(…);
} else if (snapshot.hasError) {
return Text('Failed to load the contacts');
} else {
return Text('Loading the contacts');
}
},
),
关于flutter - 如何等待功能完成?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62231894/