如何在颤振中创建 SharedPreferences 的 Singleton 类

How to create Singleton class of SharedPreferences in flutter(如何在颤振中创建 SharedPreferences 的 Singleton 类)
本文介绍了如何在颤振中创建 SharedPreferences 的 Singleton 类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SharedPreferences 始终是必需的对象,但我们使用 await Like 访问.

Always required object of SharedPreferences but we access using await Like.

等待 SharedPreferences.getInstance();

这就是为什么我想创建 SharedPreferences 的 Singleton 类并为 GET & 创建静态方法的原因在 SharedPreferences 中设置数据.

That's why I thought create Singleton class of SharedPreferences and create static method for GET & SET data in SharedPreferences.

但我不知道该怎么做,我尝试但无法成功
请帮帮我

But I dont know how to do this, I try but cant get success
Please Help me

推荐答案

处理单例类 SharedPreference 有 3 个步骤-

For handle singleton class SharedPreference follow there 3 steps -

1.把这个类放到你的项目中

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


<强>2.从你的主类的 initState() 初始化这个类

PreferenceUtils.init();

3.访问您的方法,例如

PreferenceUtils.setString(AppConstants.USER_NAME, "");
String username = PreferenceUtils.getString(AppConstants.USER_NAME);

这篇关于如何在颤振中创建 SharedPreferences 的 Singleton 类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Why local notification is not firing for UNCalendarNotificationTrigger(为什么没有为UNCalendarNotificationTrigger触发本地通知)
iOS VoiceOver functionality changes with Bundle Identifier(IOS画外音功能随捆绑包标识符而变化)
tabbar middle tab out of tabbar corner(选项卡栏中间的选项卡角外)
Pushing UIViewController above UITabBar(将UIView控制器推送到UITabBar上方)
How to target newer versions in .gitlab-ci.yml using auto devops (java 11 instead of 8 and Android 31 instead of 29)(如何在.gitlab-ci.yml中使用自动开发工具(Java 11而不是8,Android 31而不是29)瞄准较新的版本)
Android + coreLibraryDesugaring: which Java 11 APIs can I expect to work?(Android+core LibraryDesugering:我可以期待哪些Java 11API能够工作?)