我已成功使用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完全可以(不是特别昂贵)-其他所有内容可能完全基于观点。

10-08 03:23