文章目录
一、前言
在开发 Flutter 应用时,我们经常需要存储一些用户的偏好设置或者其他的一些小型数据。
这时候,我们就可以使用 Flutter 提供的 shared_preferences 包来帮助我们实现这个功能。
本文将为你简要介绍如何在 Flutter 中使用 shared_preferences。
🎉想要精通 Flutter,掌握更多技巧和最佳实践?好消息来了!👉 Flutter专栏->Flutter Developer 101 入门小册 正在等你!📚
🔍这里有你需要的所有 Flutter 学习资源,包括代码示例和深度解析。🎯
⏰专栏内容持续更新,价格也会随之上涨。现在加入,享受最优惠的价格!💰
🚀现在,让我们开始今天的 Flutter 之旅吧!🌍
二、包的版本号
本文所使用的 shared_preferences 的版本为 2.1.2。
三、shared_preferences 简介
shared_preferences 是 Flutter 的一个插件,用于读取和写入简单的键值对。它在 iOS 上包装了 NSUserDefaults,在 Android 上包装了 SharedPreferences。支持的数据类型有 int、double、bool、String 和 List。
四、如何在 Flutter 中使用 shared_preferences
1. 添加依赖
首先,我们需要在 pubspec.yaml 文件中添加 shared_preferences 的依赖,如下所示:
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.1.2
然后,运行 flutter packages get
命令来获取包。
2. 读取和写入数据
使用 shared_preferences 读取和写入数据非常简单。首先,我们需要获取 shared_preferences 的实例,然后就可以使用 set 和 get 方法来写入和读取数据了。例如:
// 获取 shared_preferences 的实例
final SharedPreferences prefs = await SharedPreferences.getInstance();
// 写入数据
await prefs.setInt('counter', 10);
await prefs.setBool('repeat', true);
await prefs.setDouble('decimal', 1.5);
await prefs.setString('action', 'Start');
await prefs.setStringList('items', ['Earth', 'Moon', 'Sun']);
// 读取数据
final int? counter = prefs.getInt('counter');
final bool? repeat = prefs.getBool('repeat');
final double? decimal = prefs.getDouble('decimal');
final String? action = prefs.getString('action');
final List<String>? items = prefs.getStringList('items');
五、一个简单的 shared_preferences 使用示例
下面是一个简单的 shared_preferences 使用示例,我们创建一个简单的计数器应用,每次点击按钮,计数器的值就会增加,而且我们会将计数器的值保存在 shared_preferences 中,这样即使我们重启应用,计数器的值也不会丢失。
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SharedPreferences Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'SharedPreferences Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
@
override
void initState() {
super.initState();
_loadCounter();
}
_loadCounter() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
_counter = (prefs.getInt('counter') ?? 0);
});
}
_incrementCounter() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
_counter = (prefs.getInt('counter') ?? 0) + 1;
prefs.setInt('counter', _counter);
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'你已经点击了这个按钮这么多次:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
在这个示例中,我们在 _loadCounter
方法中从 shared_preferences 中读取计数器的值,并在 _incrementCounter
方法中将计数器的值写入到 shared_preferences 中。
六、总结
通过本文,你应该已经了解了如何在 Flutter 中使用 shared_preferences 来存储和读取数据了。虽然 shared_preferences 只能用来存储简单的数据,但是它的使用非常简单,对于需要存储一些用户偏好设置或者其他小型数据的应用来说,是一个非常好的选择。
🚀对 Flutter 好奇?想深入探索?👉 Flutter专栏->Flutter Developer 101 入门小册 是你的最佳伙伴!📚
👀你将在这里找到全面的 Flutter 学习资源,包括代码示例和深度解析。🔍
💡想知道如何用 Flutter 构建应用?答案就在我们的专栏!🎯
⏰别等了,专栏内容持续更新,价格也会随之上涨。现在加入,享受最优惠的价格!💰
🌍一起在 Flutter 的世界中探索吧!想了解更多?点击这里:Flutter Developer 101 入门小册 专栏指引 🚩