清楚地使用令牌实现请求的最佳方法是什么?

时间:2020-09-05 10:31:31

标签: flutter

我有一个带有选项卡的屏幕,每个屏幕都实现了AutomaticKeepAliveClientMixin。当我导航到此屏幕(带有标签)时,initState中的每个标签都像这样从服务器获取数据:

img:not(#some_image):not(#another_image)    {
    margin-top:10px;
}

我认为最好在一个请求中为所有选项卡初始化数据,因为我只能在一个地方捕获一个刷新令牌已过期并且套接字异常。

strict

您将如何为屏幕和类似的请求构建逻辑?我的方法与您使用的方法类似吗?

2 个答案:

答案 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库已经包含提供程序库。