Flutter本地数据存储插件shared_preferences_module的使用
Flutter本地数据存储插件shared_preferences_module的使用
shared_preferences_module
这个模块用于为Juneflow创建shared_preferences
模块。
Installation(安装)
- 如果Juneflow项目不存在,请按照此指南创建。
- 在Juneflow项目的根目录打开终端,输入以下命令:
june add shared_preferences_module
Usage(使用)
以下是一个完整的示例,展示如何使用shared_preferences_module
来保存和读取不同类型的数据。
import 'package:flutter/material.dart';
import 'package:shared_preferences_module/shared_preferences_module.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final SharedPreferencesModule prefs = SharedPreferencesModule();
@override
void initState() {
super.initState();
// 初始化时加载数据
loadPreferences();
}
Future<void> loadPreferences() async {
// 尝试从'counter'键读取整数值。如果不存在,返回null。
final int? counter = await prefs.getInt('counter');
print('Counter Value: $counter');
// 尝试从'repeat'键读取布尔值。如果不存在,返回null。
final bool? repeat = await prefs.getBool('repeat');
print('Repeat Value: $repeat');
// 尝试从'decimal'键读取双精度值。如果不存在,返回null。
final double? decimal = await prefs.getDouble('decimal');
print('Decimal Value: $decimal');
// 尝试从'action'键读取字符串值。如果不存在,返回null。
final String? action = await prefs.getString('action');
print('Action Value: $action');
// 尝试从'items'键读取字符串列表。如果不存在,返回null。
final List<String>? items = await prefs.getStringList('items');
print('Items Value: $items');
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('SharedPreferences Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () async {
// 保存整数值到'counter'键
await prefs.setInt('counter', 10);
print('Saved Counter Value: 10');
},
child: Text('Save Integer'),
),
ElevatedButton(
onPressed: () async {
// 保存布尔值到'repeat'键
await prefs.setBool('repeat', true);
print('Saved Repeat Value: true');
},
child: Text('Save Boolean'),
),
ElevatedButton(
onPressed: () async {
// 保存双精度值到'decimal'键
await prefs.setDouble('decimal', 1.5);
print('Saved Decimal Value: 1.5');
},
child: Text('Save Double'),
),
ElevatedButton(
onPressed: () async {
// 保存字符串值到'action'键
await prefs.setString('action', 'Start');
print('Saved Action Value: Start');
},
child: Text('Save String'),
),
ElevatedButton(
onPressed: () async {
// 保存字符串列表到'items'键
await prefs.setStringList('items', ['Earth', 'Moon', 'Sun']);
print('Saved Items Value: [Earth, Moon, Sun]');
},
child: Text('Save List of Strings'),
),
ElevatedButton(
onPressed: () async {
// 移除'counter'键的数据
await prefs.remove('counter');
print('Removed Counter Key');
},
child: Text('Remove Key'),
),
],
),
),
),
);
}
}
说明
-
保存数据:
- 使用
setInt
、setBool
、setDouble
、setString
和setStringList
方法将不同类型的值保存到指定的键中。
- 使用
-
读取数据:
- 使用
getInt
、getBool
、getDouble
、getString
和getStringList
方法从指定的键中读取数据。 - 如果键不存在,则返回
null
。
- 使用
-
移除数据:
- 使用
remove
方法删除指定键的数据。
- 使用
输出示例
运行上述代码后,控制台会打印以下内容:
Counter Value: 10
Repeat Value: true
Decimal Value: 1.5
Action Value: Start
Items Value: [Earth, Moon, Sun]
Saved Counter Value: 10
Saved Repeat Value: true
Saved Decimal Value: 1.5
Saved Action Value: Start
Saved Items Value: [Earth, Moon, Sun]
Removed Counter Key
更多关于Flutter本地数据存储插件shared_preferences_module的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter本地数据存储插件shared_preferences_module的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
shared_preferences
是 Flutter 中一个非常常用的插件,用于在本地存储简单的键值对数据。它通常用于存储用户偏好设置、应用配置等小量数据。下面是如何使用 shared_preferences
插件的详细步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 shared_preferences
插件的依赖:
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.6 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在需要使用 shared_preferences
的 Dart 文件中导入插件:
import 'package:shared_preferences/shared_preferences.dart';
3. 写入数据
你可以使用 SharedPreferences
实例来存储数据。以下是一些常见数据类型的存储示例:
// 存储字符串
Future<void> saveString() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('key_string', 'Hello, Flutter!');
}
// 存储整数
Future<void> saveInt() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setInt('key_int', 42);
}
// 存储布尔值
Future<void> saveBool() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setBool('key_bool', true);
}
// 存储浮点数
Future<void> saveDouble() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setDouble('key_double', 3.14);
}
// 存储字符串列表
Future<void> saveStringList() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setStringList('key_string_list', ['Flutter', 'Dart', 'Firebase']);
}
4. 读取数据
你可以使用 SharedPreferences
实例来读取之前存储的数据:
// 读取字符串
Future<String?> readString() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('key_string');
}
// 读取整数
Future<int?> readInt() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getInt('key_int');
}
// 读取布尔值
Future<bool?> readBool() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getBool('key_bool');
}
// 读取浮点数
Future<double?> readDouble() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getDouble('key_double');
}
// 读取字符串列表
Future<List<String>?> readStringList() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getStringList('key_string_list');
}
5. 删除数据
你可以使用 SharedPreferences
实例来删除存储的数据:
// 删除指定键的数据
Future<void> removeData() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.remove('key_string');
}
// 清空所有数据
Future<void> clearData() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.clear();
}
6. 完整示例
以下是一个完整的示例,展示了如何使用 shared_preferences
插件来存储和读取数据:
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: SharedPreferencesExample(),
);
}
}
class SharedPreferencesExample extends StatefulWidget {
[@override](/user/override)
_SharedPreferencesExampleState createState() => _SharedPreferencesExampleState();
}
class _SharedPreferencesExampleState extends State<SharedPreferencesExample> {
String? storedString;
[@override](/user/override)
void initState() {
super.initState();
loadData();
}
Future<void> loadData() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
storedString = prefs.getString('key_string') ?? 'No data found';
});
}
Future<void> saveData() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('key_string', 'Hello, Flutter!');
loadData();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SharedPreferences Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Stored Data: $storedString',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: saveData,
child: Text('Save Data'),
),
],
),
),
);
}
}