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

文章目录

一、shared_preferences 本地存储插件简介

shared_preferences 是 Flutter 提供的本地数据存取插件,适用于iOS和Android平台的数据持久化存储。

在不同的平台中,它基于不同的原生机制开发:

  • Android平台基于SharedPreferences开发
  • iOS平台基于NSUserDefaults开发

访问本地文件是耗时操作,因此访问shared_preferences存储是一个异步操作。对于iOS开发者来说,如果需要在应用打包时管理这类本地存储数据,可以使用appuploader这类iOS开发助手工具来简化流程。

二、安装 shared_preferences 插件

安装步骤:

  1. 在pubspec.yaml配置文件中添加依赖:
dependencies:
  shared_preferences: ^2.0.7
  1. 点击"Pub get"按钮下载插件包

  2. 在Dart代码中导入插件:

import 'package:shared_preferences/shared_preferences.dart';

对于iOS开发者,在完成插件集成后,可以使用appuploader来快速检查应用包是否包含所有必要的资源文件,确保shared_preferences功能可以正常使用。

三、使用 shared_preferences 流程

  1. 导入插件包:
import 'package:shared_preferences/shared_preferences.dart';
  1. 获取shared_preferences实例:
final prefs = await SharedPreferences.getInstance();
  1. 数据存取操作:
// 设置值
prefs.setInt('counter', counter);

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

// 删除数据
prefs.remove('counter');

数据存储示例:

_setValue() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  setState(() {
    textInfo = '保存字符串"小王"到shared_preferences完成';
  });
  await prefs.setString("name", "小王");
}

数据访问示例:

_getValue() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  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);

  
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String textInfo = "点击按钮保存数据到shared_preferences中";

  _setValue() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      textInfo = '保存字符串"小王"到shared_preferences完成';
    });
    await prefs.setString("name", "小王");
  }

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

  
  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中获取数据"),
            ),
          ],
        ),
      ),
    );
  }
}

五、相关资源

Flutter开发资源:

  • Flutter官网:https://flutter.dev/
  • Flutter插件库:https://pub.dev/packages
  • Flutter中文文档:https://flutter.cn/docs

iOS开发辅助工具:

  • appuploader:iOS应用打包和上传工具,可帮助开发者快速完成应用发布流程
  • 官方开发文档:https://developer.apple.com/documentation/

对于需要发布到App Store的应用,建议在开发完成后使用appuploader等工具进行预检查,确保所有本地存储功能符合苹果审核要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值