每当我们必须使用共享首选项时,我们都必须创建它的一个实例。
在 flutter 中创建共享偏好的实例是异步的;final prefs = await SharedPreferences.getInstance();
每当我们必须像上面那样使用它时,我们都必须始终创建它的实例。
有没有办法创建一个共享首选项的单个实例,该实例可供整个项目使用,而我们不必在 Flutter 中一次又一次地创建它的实例?
最佳答案
创建 SharedPreference
的单例类:
把这个类放在项目中
import 'dart:async' show Future;
import 'package:shared_preferences/shared_preferences.dart';
class PreferenceUtils {
static Future<SharedPreferences> get _instance async => _prefsInstance ??= await SharedPreferences.getInstance();
static SharedPreferences _prefsInstance;
// call this method from iniState() function of mainApp().
static Future<SharedPreferences> init() async {
_prefsInstance = await _instance;
return _prefsInstance;
}
static String getString(String key, [String defValue]) {
return _prefsInstance.getString(key) ?? defValue ?? "";
}
static Future<bool> setString(String key, String value) async {
var prefs = await _instance;
return prefs?.setString(key, value) ?? Future.value(false);
}
}
在 initState() 主类中初始化这个类 void main() async {
// Required for async calls in `main`
WidgetsFlutterBinding.ensureInitialized();
// Initialize SharedPrefs instance.
await SharedPrefs.init();
runApp(MyApp());
}
方法中的访问PreferenceUtils.setString(AppConstants.USER_ID, "");
String userId = PreferenceUtils.getString(AppConstants.USER_ID);
更多:https://dev.to/lucianojung/flutter-singelton-pattern-1a38
关于android - 如何创建一个共享首选项的单个实例,它可以在 flutter 的整个项目中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73046331/