firebase - 在每个屏幕上获取当前Firebase用户的正确方法是什么?

标签 firebase flutter dart firebase-authentication

我已成功使用Flutter设置了应用程序,并进行了注册并使用Firebase身份验证登录。

登录后,我回到主屏幕,在该屏幕上我得到用户:

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  final FirebaseAuth _auth = FirebaseAuth.instance;
  FirebaseUser user;

  @override
  void initState() {
    super.initState();
    initUser();
  }

  initUser() async {
    user = await _auth.currentUser();
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        //appBar: AppBar(title: const Text("Run to Feel Better")),
        body: Center(
          child: Column(
            children: <Widget>[
              if (user == null)
                RoundedButton(
                  buttonTitle: 'Crea un account',
                  color: kRTFBBlue,
                  onPressedFunction: () {
                    Navigator.pushNamed(context, '/account');
                  },
                )
              else
                Text("${user?.email}"),
            ],
          ),
        ),
        bottomNavigationBar: bottomBar(context, 0),
      ), // /widgets/home_scaffold.dart
    );
  }
}

因此,一切正常,但是我的问题是:让当前用户进入其他页面的正确方法是什么?我是否需要使用FirebaseAuth.instance重新检查每个屏幕,还是可以保存它并在页面之间共享(也许使用提供程序包)?

非常感谢你。

最佳答案

当然,您可以同时执行两种操作,即可以使用state managementFirebaseAuth实例存储在某个位置,但是,您也可以一直调用FirebaseAuth.instance

我能想到的唯一有值(value)的见解是,调用FirebaseAuth.instance完全可以(不是特别昂贵)-其他所有内容可能完全基于观点。

关于firebase - 在每个屏幕上获取当前Firebase用户的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921352/

相关文章:

android - FirebaseCrashlytics : Send to Reports Endpoint for non-native reports disabled

android - Firebase Firestore - 移动 SDK 和 Web SDK 之间的差异

javascript - 从 Firebase 托管到 Firebase 功能的请求被 CORS 阻止

ios - 将今天的扩展添加到 flutter 应用程序的问题

Flutter:扩展与灵活

android - Flutter 如何使用 AssetBundle 存储和访问文件

ios - Flutter 应用程序的音频无法通过扬声器工作

firebase - Angularfire2:授权更改和权限被拒绝时的嵌套可观察量

flutter - 插件 `advance_pdf_viewer` 使用了不推荐使用的 Android 嵌入版本,即使最新版本添加了 pubsec

dart - 如何使文本在 flutter 中与 Textfield 一起工作