文章目录
一、shared_preferences 本地存储插件简介
shared_preferences 是 Flutter 提供的本地数据存取插件,适用于iOS和Android平台的数据持久化存储。
在不同的平台中,它基于不同的原生机制开发:
- Android平台基于SharedPreferences开发
- iOS平台基于NSUserDefaults开发
访问本地文件是耗时操作,因此访问shared_preferences存储是一个异步操作。对于iOS开发者来说,如果需要在应用打包时管理这类本地存储数据,可以使用appuploader这类iOS开发助手工具来简化流程。
二、安装 shared_preferences 插件
安装步骤:
- 在pubspec.yaml配置文件中添加依赖:
dependencies:
shared_preferences: ^2.0.7
-
点击"Pub get"按钮下载插件包
-
在Dart代码中导入插件:
import 'package:shared_preferences/shared_preferences.dart';
对于iOS开发者,在完成插件集成后,可以使用appuploader来快速检查应用包是否包含所有必要的资源文件,确保shared_preferences功能可以正常使用。
三、使用 shared_preferences 流程
- 导入插件包:
import 'package:shared_preferences/shared_preferences.dart';
- 获取shared_preferences实例:
final prefs = await SharedPreferences.getInstance();
- 数据存取操作:
// 设置值
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等工具进行预检查,确保所有本地存储功能符合苹果审核要求。