我有一个与我的API连接的应用程序,每当我登录令牌存储到共享首选项,并进一步自动登录是可能的。每当应用程序重新加载我登录与令牌存储在SharedPrefs
,但是当主屏幕加载时,我请求从我的API "api/me"
获取,它将存储的令牌发送到服务器,它将该令牌返回给我用户。在SharedPref
s中的true
和false
之间。我在应用程序抽屉中显示的数据(如用户名和照片)突然消失,但当我再次进入主屏幕时(应用程序向服务器发送请求)它再次工作。
如何从数据库中获取值并存储它,保持每个部件的访问权限。我使用提供程序。
代码如下:
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();
}
型
1条答案
按热度按时间ppcbkaq51#
您可以创建ChangeNotifier,它存储有关应用程序全局状态的详细信息,如所述:黑暗模式,API令牌等。您可以使用ChaneNotifierProvider在main方法中的应用程序小部件上方的应用程序级别注入此消息。
现在,最初您需要在共享首选项中保存用户的登录状态,因为提供程序仅在运行时存在于应用程序范围中。
因此,一旦应用程序加载,只需根据共享的首选项更新ChangeNotifier(仅需一次),更改将反映在应用程序中的任何地方