我正在使用initState方法从firestore加载数据。如果屏幕不是TabBarView()
的一部分,它将按预期工作,而在TabBarView
中,我必须将其热加载到loadData。
///我如何创建mt标签页
return DefaultTabController(
length: 4,
child: Scaffold(
appBar: AppBar(centerTitle: true,
title: Text("tabs", style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white)),
bottom: TabBar(
indicatorColor: Colors.white,
tabs: <Widget>[
Tab(
icon: Image.asset(
"assets/icons/tools.png",
height: 40,
),
child: Text("tab0",style: TextStyle(fontSize: 10),),
),
Tab(
icon: Image.asset(
"assets/icons/il.png",
height: 40,
),
child: Text("tab1",style: TextStyle(fontSize: 10)),
),
Tab(
icon: Icon(Icons.lock),
child: Text("tab2"),
),
Tab(
icon: Icon(Icons.lock),
child: Text("tab3"),
),
],
),
),
body: TabBarView(children: <Widget>[
Tab0(),
Tab2(),
Tab2(),
Tab3()
],),
),
);
这是我从Tab3中的cloudfirestore加载数据的方式:
getIssues() async {
final FirebaseUser fbUser = await FirebaseAuth.instance.currentUser();
final String user = fbUser.uid;
return await Firestore.instance
.collection('users')
.document(user)
.collection('mydata')
.getDocuments();
}
我的initState
:
QuerySnapshot querySnapshot;
@override
void initState() {
super.initState();
getIssues().then((results) {
querySnapshot = results;
});
}
答案 0 :(得分:1)
也许您可以尝试以下方法:
@override
void initState() {
super.initState();
getIssues().then((results) {
setState(() {
querySnapshot = results;
});
});
}