Flutter 什么';使用令牌实现请求的最佳方式是什么?
我有一个带有选项卡的屏幕,每个屏幕都实现了AutomaticEpaLiveClientMixin。当我导航到此屏幕(带有选项卡)时,initState中的每个选项卡都会从服务器获取数据,如下所示:Flutter 什么';使用令牌实现请求的最佳方式是什么?,flutter,Flutter,我有一个带有选项卡的屏幕,每个屏幕都实现了AutomaticEpaLiveClientMixin。当我导航到此屏幕(带有选项卡)时,initState中的每个选项卡都会从服务器获取数据,如下所示: fetchData()async{ final token = await getToken();//refresh if it is expired. return fetchData(token); } 我认为最好在一个请求中初始化所有选项卡的数据,因为我只能在一个位置捕获一个已过期的刷
fetchData()async{
final token = await getToken();//refresh if it is expired.
return fetchData(token);
}
我认为最好在一个请求中初始化所有选项卡的数据,因为我只能在一个位置捕获一个已过期的刷新令牌和套接字异常
fetchAllData()async{
final token = await getToken();//refresh if it is expired.
return fetchAllData(token);
}
您将如何为屏幕和类似的请求构建逻辑?我的方法与您使用的方法类似吗?我建议您使用提供商()。通过订阅同一个提供者,您将能够重用曾经获取的数据。例如,我使用这种方法(在不同的地方)向我的应用程序提供当前用户:
class UserModel extends ChangeNotifier {
User _currentUser;
void setUser(User user) {
_currentUser = user;
notifyListeners();
}
Future<User> getUser(BuildContext context) async {
if (_currentUser == null) {
_currentUser = await getUserRequest(context, hasRedirect: false);
}
return _currentUser;
}
}
class UserModel扩展了ChangeNotifier{
用户\u当前用户;
void setUser(用户){
_当前用户=用户;
notifyListeners();
}
未来getUser(BuildContext上下文)异步{
if(_currentUser==null){
_currentUser=await getUserRequest(上下文,hasRedirect:false);
}
返回当前用户;
}
}
希望它能满足您的需要 您可以将fetchAllData方法添加到包含所有选项卡式小部件的小部件的initState中。然后,您可以将相关数据传递给每个选项卡式小部件的构造函数。这不是最好的解决方案,但应该有效
我还是推荐你。国家管理体系不是包罗万象的,也不是排他性的。根据您的状态显示方式,您可以使用多个状态管理系统。嘿,bloc库已经包含了提供者库。我使用bloc进行状态管理,在我的问题中,我想知道如何处理令牌请求。创建提供令牌的bloc?我认为这不是一个好的解决方案,但人们如何处理它仍然很有趣。就个人而言,我会选择一个街区,是的。与我的提供者类似,我可能会利用flatter_secure_存储插件()来保存这个令牌,以便在不总是获取令牌的情况下进行查询。只要我的API返回401,我就会重新进行提取。但我现在还没找到更好的方法