提供者的状态管理

时间:2019-05-20 09:35:31

标签: flutter

我有一个简单的Provider类:

import 'package:flutter/foundation.dart';

class AppState with ChangeNotifier {
  bool _isLoggedIn = false;
  bool get isLoggedIn => _isLoggedIn;

  set isLoggedIn(bool newValue) {
    _isLoggedIn = newValue;
    notifyListeners();
  }
}

在登录类中,如果登录成功,我只需将isLoggedIn设置为true:

 void _signInWithEmailAndPassword(appState) async {
    try {
      final FirebaseUser user = await _auth.signInWithEmailAndPassword(
        ...
      );

      if (user != null) {
        appState.isLoggedIn = true;
        appState.userData = user.providerData;
        ...
      }
    } catch (e) {
      setState(() {
        _errorMessage = e.message;
      });
    }
  }

即使成功登录后,按Android上的“后退”按钮也可以使用户返回此页面。因此,我想知道是否可以在Provider.of之前访问Widget build并重定向用户,如果{{1 }}是isLoggedIn

现在我有类似的东西:

true

这只是登录视图的一种用例,但我确定可以在其他情况下使用此功能。

1 个答案:

答案 0 :(得分:1)

如果您打算在整个应用程序中使用FirebaseUser或“登录用户”,我建议您在应用程序的最高级别上添加提供程序。例子

{{1}}

参考

Fireship 185 Provider

Great Youtube video explaining the code