我有一个带有选项卡的屏幕,每个屏幕都实现了AutomaticKeepAliveClientMixin。当我导航到此屏幕(带有标签)时,initState中的每个标签都像这样从服务器获取数据:
img:not(#some_image):not(#another_image) {
margin-top:10px;
}
我认为最好在一个请求中为所有选项卡初始化数据,因为我只能在一个地方捕获一个刷新令牌已过期并且套接字异常。
strict
您将如何为屏幕和类似的请求构建逻辑?我的方法与您使用的方法类似吗?
答案 0 :(得分:1)
我建议您使用提供者(https://pub.dev/packages/provider)。通过订阅相同的提供程序,您将能够重用曾经获取的数据。例如,我使用这种方法向我的应用程序(在不同位置)提供当前用户:
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;
}
}
希望它会满足您的需求!
答案 1 :(得分:0)
您可以将fetchAllData方法添加到包含所有选项卡式窗口小部件的窗口小部件的initState中。然后,您可以将相关数据传递到每个选项卡式小部件的构造函数。不是最好的解决方案,但应该可以。
我仍然会推荐提供商。国家管理系统不全是包容性的,也不是排他性的。根据状态的显示方式,您可以使用多个状态管理系统。 Helll,bloc库已经包含提供程序库。