Flutter-本地存储shared_preferences

简介: 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、存储相关


image.png


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() {......}


目录
相关文章
|
存储 JSON 数据库
Flutter必备技能:轻松掌握本地存储与数据库优化技巧!
Flutter必备技能:轻松掌握本地存储与数据库优化技巧!
336 0
|
存储 移动开发 Java
Flutter(二十七)——shared_preferences本地存储
Flutter(二十七)——shared_preferences本地存储
738 2
Flutter(二十七)——shared_preferences本地存储
|
存储 Dart Android开发
【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )
【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )
624 0
【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )
|
存储 Android开发 iOS开发
Flutter 本地存储之shared_preferences
Flutter 本地存储之shared_preferences
281 0
|
Dart
Flutter:删除所有已保存的shared_preferences首选项
dart - Flutter:删除所有已保存的shared_preferences首选项 想在用户点击注销时删除所有保存的shared_preferences首选项。有什么方法可以一次性完成而不删除一个吗?
357 0
|
存储
flutter中本地存储shared_preferences的使用·
首先在 pubspec.yaml 文件中添加 shared_preferences 引用并 Packages get
368 0
|
11月前
flutter开发中Use ‘const’ with the constructor to improve performance. Try adding the ‘const’ keyword to the constructor invocation.报错如何解决-优雅草卓伊凡
flutter开发中Use ‘const’ with the constructor to improve performance. Try adding the ‘const’ keyword to the constructor invocation.报错如何解决-优雅草卓伊凡
179 1
|
10月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
663 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
11月前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
386 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
10月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
664 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex