【问题标题】:What is the right way of getting the current Firebase user in every screen?在每个屏幕中获取当前 Firebase 用户的正确方法是什么?
【发布时间】:2019-11-18 19:11:37
【问题描述】:

我成功地使用 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 重新检查每个屏幕,还是可以保存并在页面之间共享(可能使用 Provider 包)?

非常感谢。

【问题讨论】:

    标签: firebase flutter dart firebase-authentication


    【解决方案1】:

    当然,您可以同时使用这两种方法,即您可以使用state management 将您的FirebaseAuth 实例存储在某处,但是,您也可以一直调用FirebaseAuth.instance

    我能想到的唯一有价值的见解是致电FirebaseAuth.instance 完全没问题(不是特别贵)- 其他一切可能完全基于意见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多