【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )

简介: 【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )

文章目录

一、shared_preferences 本地存储插件简介

二、安装 shared_preferences 插件

三、使用 shared_preferences 流程

四、完整代码示例






一、shared_preferences 本地存储插件简介


shared_preferences 是 Flutter 提供的 本地数据存取 插件 ;


在不同的平台 , 基于不同的机制开发 , 如 Android 平台中基于 SharedPreferences 开发 , iOS 平台中基于 NSUserDefaults 开发 ;


访问本地文件是耗时操作 , 因此访问 shared_preferences 存储是一个 异步操作 ;






二、安装 shared_preferences 插件


安装 shared_preferences 插件 :


shared_preferences 插件地址 : https://pub.dev/packages/shared_preferences


按照 https://pub.dev/packages/shared_preferences/install 地址的安装教程进行安装 ;


首先 , 在 pubspec.yaml 配置文件中 , 导入插件包 :


dependencies:
  shared_preferences: ^2.0.7


然后 , 下载插件包 , 点击 Pub Get 按钮 , 下载插件包到本工程中 ;




最后 , 在 Dart 代码中导入如下代码 , 即可使用 shared_preferences ;


import 'package:shared_preferences/shared_preferences.dart';






三、使用 shared_preferences 流程


在完成了上述安装 shared_preferences 插件之后 , 才能开始使用 ;


首先 , 导入插件包 ;


import 'package:shared_preferences/shared_preferences.dart';


然后 , 获取 shared_preferences 实例 ;


final prefs = await SharedPreferences.getInstance();


最后 , 通过上述 shared_preferences 实例可以 设置 / 读取 存储的键值对数值 ;


/// 设置值
prefs.setInt('counter', counter);
/// 获取值 
final counter = prefs.getInt('counter') ?? 0;}


如果要删除数据 , 调用 shared_preferences 实例的 remove 方法 ;


prefs.remove('counter');



下图是 Flutter 的 SharedPreferences 类提供的所有方法 , 重点关注数据的访问方法 ;


image.png


数据存储示例 :


 

_setValue() async {
    /// 先获取 SharedPreferences 实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      textInfo = '保存字符串 " 小王 " 到 shared_preferences 完成';
    });
    /// 将数据保存到 SharedPreferences 中
    await prefs.setString("name", "小王");
  }


数据访问示例 :


 _getValue() async {

_getValue() async {
    /// 先获取 SharedPreferences 实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    /// 从 SharedPreferences 获取数据
    String? name = await prefs.getString("name");
    setState(() {
      textInfo = '从 shared_preferences 取出数据 " ${name} "';
    });
  }





四、完整代码示例


import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
  runApp(MyApp());
}
class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  _MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
  String textInfo = "点击按钮保存数据到 shared_preferences 中";
  _setValue() async {
    /// 先获取 SharedPreferences 实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      textInfo = '保存字符串 " 小王 " 到 shared_preferences 完成';
    });
    /// 将数据保存到 SharedPreferences 中
    await prefs.setString("name", "小王");
  }
  _getValue() async {
    /// 先获取 SharedPreferences 实例
    SharedPreferences prefs = await SharedPreferences.getInstance();
    /// 从 SharedPreferences 获取数据
    String? name = await prefs.getString("name");
    setState(() {
      textInfo = '从 shared_preferences 取出数据 " ${name} "';
    });
  }
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("shared_preferences 数据访问"),
        ),
        body: Column(
          children: [
            Text(textInfo),
            ElevatedButton(
              onPressed: (){
                _setValue();
              },
              child: Text("存储数据到 shared_preferences 中"),
            ),
            ElevatedButton(
              onPressed: (){
                _getValue();
              },
              child: Text("从 shared_preferences 中获取数据"),
            ),
          ],
        ),
      ),
    );
  }
}


执行结果 :

image.png


目录
相关文章
|
1月前
|
Dart Android开发
鸿蒙Flutter实战:05-使用第三方插件
在鸿蒙Flutter开发中,使用原生功能需借助插件。可自编原生ArkTS代码或采用第三方插件。自编代码通过PlatformView或MethodChannel实现;第三方插件需确保适配鸿蒙,否则须配置替代插件或自行开发。
59 1
鸿蒙Flutter实战:05-使用第三方插件
|
6月前
|
传感器 Android开发 iOS开发
Flutter插件开发指南02: 事件订阅 EventChannel
上一节我们讲了 Channel 通道,但是如果你是卫星定位业务,原生端主动推消息给 Flutter 这时候就要用到 EventChannel 通道了。 本节会写一个 1~50 的计数器,到 50 后自动关闭原生的消息订阅。
150 1
Flutter插件开发指南02:  事件订阅 EventChannel
|
6月前
|
Java Linux API
Flutter插件开发指南01: 通道Channel的编写与实现
Flutter插件是Flutter应用程序与原生平台之间的桥梁,使得Flutter应用程序可以与原生代码进行交互,从而扩展Flutter应用程序的功能和能力。Flutter插件通常包括Dart和原生代码(例如Java、Kotlin或Objective-C、Swift等),并可以通过Flutter插件框架来注册、管理和调用。
134 0
Flutter插件开发指南01: 通道Channel的编写与实现
|
13天前
|
存储 调度 数据安全/隐私保护
鸿蒙Flutter实战:13-鸿蒙应用打包上架流程
鸿蒙应用打包上架流程包括创建应用、打包签名和上传应用。首先,在AppGallery Connect中创建项目、APP ID和元服务。接着,使用Deveco进行手动签名,生成.p12和.csr文件,并在AppGallery Connect中上传CSR文件获取证书。最后,配置签名并打包生成.app文件,上传至应用市场。常见问题包括检查签名配置文件是否正确。参考资料:[应用/服务签名](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-V5)。
43 3
鸿蒙Flutter实战:13-鸿蒙应用打包上架流程
|
1月前
|
编解码 Dart API
鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件
本文介绍了如何开发一个 Flutter 鸿蒙插件,实现 Flutter 与鸿蒙的混合开发及双端消息通信。通过定义 `MethodChannel` 实现 Flutter 侧的 token 存取方法,并在鸿蒙侧编写 `EntryAbility` 和 `ForestPlugin`,使用鸿蒙的首选项 API 完成数据的读写操作。文章还提供了注意事项和参考资料,帮助开发者更好地理解和实现这一过程。
57 0
flutter-barrage-craft — 能成为pub.dev中最好用的弹幕插件吗🤔?
Hi👋,最近我开发了一个弹幕插件,想知道它是否有成为 pub.dev 中最好用的弹幕插件的潜力。能帮我评估一下吗?🐱‍🏍
|
3月前
|
JavaScript 前端开发 Android开发
Flutter笔记:关于WebView插件的用法(下)
Flutter笔记:关于WebView插件的用法(下)
220 5
|
3月前
|
存储 缓存 JavaScript
Flutter笔记:关于WebView插件的用法(上)
Flutter笔记:关于WebView插件的用法(上)
1488 4
|
4月前
|
Android开发
Flutter-发布插件到pub上传不上问题
Flutter-发布插件到pub上传不上问题
39 0
|
4月前
|
Dart Android开发 iOS开发
flutter插件开发
flutter插件开发