前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )

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

作者头像
韩曙亮
发布2023-03-29 15:48:06
1.1K0
发布2023-03-29 15:48:06
举报

文章目录

一、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 配置文件中 , 导入插件包 :

代码语言:javascript
复制
dependencies:
  shared_preferences: ^2.0.7

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

在这里插入图片描述
在这里插入图片描述

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

代码语言:javascript
复制
import 'package:shared_preferences/shared_preferences.dart';

三、使用 shared_preferences 流程


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

首先 , 导入插件包 ;

代码语言:javascript
复制
import 'package:shared_preferences/shared_preferences.dart';

然后 , 获取 shared_preferences 实例 ;

代码语言:javascript
复制
final prefs = await SharedPreferences.getInstance();

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

代码语言:javascript
复制
/// 设置值
prefs.setInt('counter', counter);

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

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

代码语言:javascript
复制
prefs.remove('counter');

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

在这里插入图片描述
在这里插入图片描述

数据存储示例 :

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

数据访问示例 :

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

四、完整代码示例


代码语言:javascript
复制
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 中获取数据"),
            ),

          ],
        ),
      ),
    );
  }
}

执行结果 :

请添加图片描述
请添加图片描述

五、相关资源


参考资料 :

重要的专题 :

博客源码下载 :

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、shared_preferences 本地存储插件简介
  • 二、安装 shared_preferences 插件
  • 三、使用 shared_preferences 流程
  • 四、完整代码示例
  • 五、相关资源
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档