gpt4 book ai didi

flutter - 打开页面时如何始终设置状态?

转载 作者:行者123 更新时间:2023-12-03 03:32:39 25 4
gpt4 key购买 nike

我的问题是,打开页面时未设置变量。因此,当我从Firestore查询时,出现错误The method '[]' was called on null. Receiver: null Tried calling: []("userbio")我声明了2个变量

  var userid;
var useremail;
然后我写了这个 future
Future getUserData() async {
var firestore = Firestore.instance;
final FirebaseUser user = await FirebaseAuth.instance.currentUser();
final String uid = user.uid.toString();
final String email = user.email.toString();
DocumentReference qn = await firestore
.collection("users")
.document(email)
.collection('userdetails')
.document(uid);
void initState() {
setState(() {
userid = uid;
useremail = email;
});
}


return qn.documentID;
}
这是我目前正在尝试setState的方式,但是它不起作用
void initState() {
setState(() {
userid = uid;
useremail = email;
});
}

请帮忙,谢谢。
如果您需要更多上下文,请发表评论

最佳答案

似乎您是在声明嵌套函数initState(),但未调用它。我只是删除该函数并直接调用setState():

...
.document(uid);
setState(() {
...
编辑:调用 getUserData()里面的 initState:
// In a class extending State<T>
@override
void initState() {
super.initState();
// synchronous call if you don't care about the result
getUserData();
// anonymous function if you want the result
() async {
var result = await getUserData();
}();
}
PS: initState()build()setState()一样,是Flutter中的预定义名称。尽量不要将那些名称用于不会覆盖原始名称的功能。

关于flutter - 打开页面时如何始终设置状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63014328/

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