【问题标题】:SharedPreferences.getInstance() before class constructorSharedPreferences.getInstance() 在类构造函数之前
【发布时间】:2018-08-13 13:44:15
【问题描述】:

我有一个自定义 NetworkUtil 类,其中包含方法 Future get() 和 Future post()。这两种方法需要使用保存在 SharedPreferences 中的不记名令牌值。此类有一个默认构造函数,它使用以下方法从 SharedPreferences 检索此令牌值:

SharedPreferences.getInstance().then((res) {
  token = res.getString("token");
});

但这会返回令牌值,因为它返回 Future。

我怎样才能更早或更快地获得代币价值?现在如果调用 post() 方法,则不会返回 jet。

【问题讨论】:

  • 你的意思是,获取首选项的是你的构造函数?
  • 正确。我知道你们这些人,仅凭方法就可以得到这个......会尝试。

标签: class asynchronous sharedpreferences flutter


【解决方案1】:

这有点棘手。

  1. 您可以将令牌本身直接注入NetworkUtil,如下所示,

    class NetworkUtil {
    final String token;
    NetworkUtil(this.token);
    }
    
    //usage:
    SharedPreferences prefs = await SharedPreferences.getInstance();
    token = prefs.getString("token");
    NetworkUtil networkUtil = NetworkUtil(token);
    
  2. 在使用令牌之前检查null

    class NetworkUtil {
      String token;
      NetworkUtil() {
        SharedPreferences.getInstance().then((res) {
          token = res.getString("token");
        });
      }
    
      Future post(postBody) {
        if (token != null) {
    
        } else {
          throw Exception("token is not there");
        }
      }
    }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多