类构造函数之前的SharedPreferences.getInstance()

时间:2018-08-13 13:44:15

标签: class asynchronous sharedpreferences flutter

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

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

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

如何才能更快或更早地获得令牌价值?现在,如果调用方法post(),则令牌不会返回jet。

1 个答案:

答案 0 :(得分:0)

有点棘手。

  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");
        }
      }
    }