Flutter-本地存儲shared_preferences

Package地址:https://pub.dev/packages/shared_preferences

目錄

  • shared_preferences是什麼?
  • 如何使用 shared_preferences ?
  • shared_preferences有哪些常用的API?

一、shared_preferences是什麼?

  • 1.1、shared_preferences是Flutter社區開發的一個本地數據存取插件
  • 1.2、shared_preferences的特徵如下
    • 簡單的,異步的,持久化的key-value存儲系統
    • 在Android上它是基於 SharePreferences的
    • 在iOS上它是基於 NSUserDefaults

二、如何使用 shared_preferences

  • 2.1、首先在 pubspec.yaml文件中添加,然後運行 flutter pub get

    dependencies:
        shared_preferences: ^2.0.7
    

    在使用的地方導入:import 'package:shared_preferences/shared_preferences.dart';

  • 2.2、Sharedpreferences 基本用法
    提示:如果在使用的時候報錯:[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)
    解決方案:如果您使用的是shared_preferences 0.2.4及更高版本,可直接在flutter項目的main方法中添加以下內容

    SharedPreferences.setMockInitialValues({}); 
    
    • <1>、存儲和讀取基本數據類型,下面以String爲例,其他的類型不做展示
      存儲

      saveData() async {
           SharedPreferences prefs = await SharedPreferences.getInstance();
           int counter =  1;
           bool result = await prefs.setInt('counter', counter);
           print("存儲的結果:$result");
      }
      

      讀取

      readData() async {
          SharedPreferences prefs = await SharedPreferences.getInstance();
          final counter = await prefs.getInt('counter' ?? 0);
          print("取出數據:$counter");
      }
      

      刪除數據

      deleteData() async {
          SharedPreferences prefs = await SharedPreferences.getInstance();
          final result = await prefs.remove("counter");
          print("刪除的結果:$result");
      }
      
    • <2>、清空整個緩存

      clear() async {
         SharedPreferences prefs = await SharedPreferences.getInstance();
         prefs.clear(); ////清空緩存
      } 
      

三、shared_preferences有哪些常用的API?

  • 3.1、存儲相關


    Future<bool> setBool(String key, bool value) => _setValue('Bool', key, value);
    
    Future<bool> setInt(String key, int value) => _setValue('Int', key, value);
    
    Future<bool> setDouble(String key, double value) =>
    _setValue('Double', key, value);
    
    Future<bool> setString(String key, String value) =>
    _setValue('String', key, value);
    
    Future<bool> setStringList(String key, List<String> value) =>
    _setValue('StringList', key, value);
    
  • 3.2、讀取相關

    Object? get(String key) => _preferenceCache[key];
    
    bool? getBool(String key) => _preferenceCache[key] as bool?;
    
    int? getInt(String key) => _preferenceCache[key] as int?;
    
    double? getDouble(String key) => _preferenceCache[key] as double?;
    
    Set<String> getKeys() => Set<String>.from(_preferenceCache.keys);
    
    String? getString(String key) => _preferenceCache[key] as String?;
    
     List<String>? getStringList(String key) {......}
    
     toString();
    
  • 3.3、刪除相關

    remove(String key) {......}
    
    clear() {......}
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章