【问题标题】:What is Wrong With My InitState in Flutter?Flutter 中的 InitState 有什么问题?
【发布时间】:2020-12-02 14:46:56
【问题描述】:

我正在尝试使用flutter和firebase进行自动登录并将其放入initState但它似乎没有被执行,因为我试图将它移动到Build Widget但没有任何效果但是当我将它放入LoginPageState时它被执行了但有错误: 使用不包含导航器的上下文请求导航器操作。 我的代码:

@override
  void initState() {
    super.initState();
    final user = FirebaseAuth.instance.currentUser();
    if (user == null) {
      print('User Null');
    } else {
      Navigator.pushReplacementNamed(context, '/HomePage');
    }
  }

【问题讨论】:

  • 试着在外面创建一个函数,把代码放在里面,然后在initstate里面调用
  • 试着在外面创建一个函数,把代码放在里面,然后在initstate里面调用
  • 你能试着把你的代码放进去吗? WidgetsBinding.instance.addPostFrameCallback((timeStamp) { 最终用户 = FirebaseAuth.instance.currentUser(); if (user == null) { print('User Null'); } else { Navigator.pushReplacementNamed(context, '/HomePage' ); } });
  • 在函数内部执行此操作无效。

标签: flutter flutter-state


【解决方案1】:

您需要等待FirebaseAuth.instance.currentUser() 完成。所以使用await如下。

final user = await FirebaseAuth.instance.currentUser()

【讨论】:

  • 除了将异步添加到 initState 之外,它工作正常,因为它是不可能的,所以我将异步添加到 autologin() 函数。谢谢:)
猜你喜欢
  • 2019-02-17
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 2020-02-10
  • 2020-07-11
  • 2019-12-24
  • 2019-06-28
相关资源
最近更新 更多