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

标签 flutter dart state

我的问题是,打开页面时未设置变量。因此,当我从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/

相关文章:

ios - 如何修复 [!] 在 `flutter_test` 中找不到 `.symlinks/plugins/flutter_test/ios` 的 podspec

flutter - 为什么父级StatefulWidget中的setState不会更新子级StatefulWidget

flutter - http请求不断失败

javascript - 将异步获取的数据传递给子 Prop

windows - 保存和恢复应用程序和布局

java - 我如何将保存的项目添加到 Flutter 中的 Collection 夹部分?

flutter - 如何在 flutter web 中支持 HTTP header NetworkImage

flutter - 避免多次解码图像

Flutter 什么是 StatefulHookWidget 以及我们如何使用它?

flutter - 更改项目状态后如何更新列表? ( flutter 和提供者)