是否有任何方法在Flutter中用Provider全球登录学生?

问题描述 投票:0回答:1

我有一个应用程序,它与我的API连接,每当我登录token存储到共享的首选项和进一步的自动登录是可行的。"api/me" 它将存储的token发送给服务器,然后用该token返回我的用户。但我也实现了暗色主题切换器,它的值可以在以下两种情况下切换 truefalse 在SharedPrefs中。我在应用程序抽屉中显示的数据(如用户名和照片)突然消失,但当我再次进入主屏幕时(应用程序向服务器发送请求),它又出现了工作。

如何从DB中获取值并将其存储,保持每个widget的访问。我使用的是Provider。

下面是代码。

String token;

Future<Student> setStudent() async {

    try{

    final url = "https://myapi/me";
    Response res = await post(Uri.encodeFull(url), body:{'token': token});

    json.decode(res.body);

    } catch (e){
      print(e);
    }

    notifyListeners();

  }
}

我在我的主屏幕上使用它。

@override
  void didChangeDependencies() {
    if (_isInit) {
      setState(() {
        _isLoading = true;
      });
      Provider.of<StudentData>(context).setStudent().then((std) {
        setState(() {
          _isLoading = false;
          student = std;
        });
      });
    }
    _isInit = false;
    super.didChangeDependencies();
  }
android api flutter provider
1个回答
0
投票

你可以创建ChangeNotifier,存储有关应用程序全局状态的详细信息,如所述:黑暗模式,api token等。你可以使用ChaneNotifierProvider在应用程序级别的主方法中的应用程序widget上面注入这个。

现在,最初你需要将用户的登录状态保存在共享的偏好设置中,因为provider只在应用运行时存在于应用范围内。

因此,一旦应用程序加载,只需根据共享偏好更新ChangeNotifier(只需要一次),变化将被反映出来,它将在应用程序的任何地方使用。

© www.soinside.com 2019 - 2024. All rights reserved.