如何在我的Flutter App中创建sharedpreferences类并在各处使用它

时间:2019-11-20 07:28:04

标签: flutter

操作方法,请给我一个想法。就像一个可以被其他所有类访问的全局类,我实际上想构建一个util类,以便所有这些东西都在那里,而我可以仅使用util类的对象来调用这些东西。

这就是我一直在做的

SharedPreferences sharedPreferences;

sharedPreferences = await SharedPreferences.getInstance();
                      sharedPreferences.setString('uwr_name', ctrUwrName.text);
                      getCredential();

这个getCredentail()方法已经在我要从sharePref中获取数据的地方调用了,但是我不知道我是否需要在设置数据时调用它,如果我在设置时不放它数据到sharedpref会给出错误

getCredential() async {
  sharedPreferences = await SharedPreferences.getInstance();
}

4 个答案:

答案 0 :(得分:1)

尝试shared_preferences。 然后,您可以创建这样的util类,

class SessionManager {
  final String auth_token = "auth_token";

//set data into shared preferences like this
  Future<void> setAuthToken(String auth_token) async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString(this.auth_token, auth_token);
  }

//get value from shared preferences
  Future<String> getAuthToken() async {
    final SharedPreferences pref = await SharedPreferences.getInstance();
    String auth_token;
    auth_token = pref.getString(this.auth_token) ?? null;
    return auth_token;
  }
}

在setAuthToken方法中设置值,

 SessionManager prefs =  SessionManager();
 prefs.setAuthToken(welcome.data.auth_token);

从getAuthToken方法获取价值

 Future<String> authToken = prefs.getAuthToken();
 authToken.then((data) {
 print("authToken " + data.toString());
 },onError: (e) {
     print(e);
 });

我创建了this gist供您使用。

答案 1 :(得分:0)

您可以创建一个名为shared_pref.dart的文件,在其中创建一个新的SharedPreference对象和所需的所有方法(removeElement, insertElement, etc)。

然后,每当启动应用程序时,您都可以在第一页中创建一个SharedPref sp = SharedPref(),然后将其传递给其他页面。但是,由于SharedPref保存在内存中,因此每次加载新页面时都可以创建对象。

答案 2 :(得分:0)

您可以尝试使用此库shared_preferencesshared_preferences库按单例设计模式提供了一个SharedPreferences实例,可帮助您连接到Android上的XML文件或iOS上的用户数据

答案 3 :(得分:0)

在main函数中的main.dart上将其初始化,然后在如下所示的任何地方使用;

main.dart

SharedPreferences prefs = await SharedPreferences.getInstance();

另一页

prefs.getString('key');