【问题标题】:Losing buildContext after sign-out of Flutter Firebase app退出 Flutter Firebase 应用程序后丢失 buildContext
【发布时间】:2022-01-09 15:58:13
【问题描述】:

我可以第一次使用我的 Flutter Firebase 应用程序登录,在我退出并再次登录后,我得到提供者脱离上下文错误并且应用程序返回登录屏幕。当我再次登录时,我能够成功登录。我相信我在退出 Flutter Firebase 应用程序后丢失了构建上下文。

我所有的provider都在Material App之上,Material App的首页是登录界面。 签名前我的小部件检查器的屏幕截图:https://i.stack.imgur.com/Sznk0.png 成功登录后的小部件检查器如下:https://i.stack.imgur.com/2omkU.png 成功退出后我的小部件检查器的屏幕截图: https://i.stack.imgur.com/lUHjm.png

有什么建议吗?

【问题讨论】:

    标签: firebase flutter provider


    【解决方案1】:

    尝试将您的 Provider 范围置于根级别。我不知道您的提供者范围内有什么,因为我没有看到您的代码,但它应该是这样的。

    return Provider<int>.value(
      value: value,
      child: MyApp(),
    );
    

    我建议您查看Riverpod,因为它可以以更简洁的方式完成,而无需提及所有这些不同的提供者。像这样:

    return ProviderScope(
      child: MyApp(),
    );
    

    【讨论】:

    • 我所有的提供者都在 MaterialApp 之上。
    • 你能分享一下错误吗?
    • E/flutter (7829): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] 未处理异常:空值检查运算符用于空值 E/flutter (7829):# 0 Element.widget package:flutter/…/widgets/framework.dart:3156 E/flutter (7829):#1 Provider._inheritedElementOf package:provider/src/provider.dart:341 E/flutter (7829):#2 Provider .of package:provider/src/provider.dart:293 E/flutter (7829): #3 _SignInState.build. package:pos/.../authenticate/sign_in.dart:200 E/flutter (7829): E/flutter (7829):
    • 由于上下文不可用,这是给出 Null 检查错误的代码:Provider.of(context, listen: false) .changeLoggedInUserId(loggedInUserId);
    • NotificationService 是一个 ChangeNotifier,它的 ChangeNotifierProvider 定义在 MaterialApp 之上。
    【解决方案2】:

    仍然面临这个问题。消费者提供者没有解决问题。

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      相关资源
      最近更新 更多