Flutter扩展数据类型存储插件shared_preferences_moretypes的使用
Flutter扩展数据类型存储插件shared_preferences_moretypes的使用
shared_preferences_moretypes
是一个扩展了 SharedPreferences
功能的插件,允许你存储和加载更多数据类型。
支持的数据类型
String
int
bool
double
- 递归列表(例如
<List<double>>
,<List<double<List<double>>>>
等) - 递归映射(例如
<Map<String, String>>
,<Map<String, Map<int, String>>>
等)
使用方法
安装插件
首先,在你的 pubspec.yaml
文件中添加插件依赖:
dependencies:
shared_preferences_moretypes: ^版本号
然后运行 flutter pub get
来获取依赖。
保存数据
使用 ExtendedPrefs
类来保存数据。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:shared_preferences_moretypes/shared_preferences_moretypes.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化插件
await ExtendedPrefs().init();
// 保存字符串数据
await ExtendedPrefs().dataStore("keyS", "value");
// 保存整数数据
await ExtendedPrefs().dataStore("keyI", 10);
// 保存布尔值数据
await ExtendedPrefs().dataStore("keyB", true);
// 保存双精度浮点数数据
await ExtendedPrefs().dataStore("keyD", 3.14);
// 保存列表数据
await ExtendedPrefs().dataStore("keyL", [1.0, 2.0, 3.0]);
// 保存映射数据
await ExtendedPrefs().dataStore("keyM", {"key": "value"});
}
加载数据
同样使用 ExtendedPrefs
类来加载数据。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:shared_preferences_moretypes/shared_preferences_moretypes.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化插件
await ExtendedPrefs().init();
// 加载字符串数据
String? value = await ExtendedPrefs().dataLoad("keyS", "String");
print(value); // 输出: value
// 加载整数数据
int? intValue = await ExtendedPrefs().dataLoad("keyI", "int");
print(intValue); // 输出: 10
// 加载布尔值数据
bool? boolValue = await ExtendedPrefs().dataLoad("keyB", "bool");
print(boolValue); // 输出: true
// 加载双精度浮点数数据
double? doubleValue = await ExtendedPrefs().dataLoad("keyD", "double");
print(doubleValue); // 输出: 3.14
// 加载列表数据
List<double>? listValue = await ExtendedPrefs().dataLoad("keyL", "List<double>");
print(listValue); // 输出: [1.0, 2.0, 3.0]
// 加载映射数据
Map<String, dynamic>? mapValue = await ExtendedPrefs().dataLoad("keyM", "Map<String, dynamic>");
print(mapValue); // 输出: {"key": "value"}
}
更多关于Flutter扩展数据类型存储插件shared_preferences_moretypes的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter扩展数据类型存储插件shared_preferences_moretypes的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
shared_preferences_moretypes
是一个 Flutter 插件,它扩展了 shared_preferences
插件,允许你存储更多类型的数据,例如 List
、Map
和其他复杂数据类型。这个插件通过将复杂数据类型序列化为字符串,然后存储在 SharedPreferences
中来实现这一点。
安装插件
首先,你需要在 pubspec.yaml
文件中添加依赖项:
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.6
shared_preferences_moretypes: ^1.0.0
然后运行 flutter pub get
来安装依赖。
使用示例
下面是一个简单的示例,展示如何使用 shared_preferences_moretypes
来存储和读取复杂数据类型。
import 'package:flutter/material.dart';
import 'package:shared_preferences_moretypes/shared_preferences_moretypes.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
late SharedPreferencesMoreTypes prefs;
[@override](/user/override)
void initState() {
super.initState();
initPrefs();
}
Future<void> initPrefs() async {
prefs = await SharedPreferencesMoreTypes.getInstance();
}
Future<void> saveData() async {
// 保存List
await prefs.setList('myList', ['apple', 'banana', 'cherry']);
// 保存Map
await prefs.setMap('myMap', {'name': 'John', 'age': 30});
// 保存自定义对象
await prefs.setObject('myObject', MyCustomObject('John', 30));
}
Future<void> loadData() async {
// 读取List
List<String>? myList = await prefs.getList('myList');
print('Loaded List: $myList');
// 读取Map
Map<String, dynamic>? myMap = await prefs.getMap('myMap');
print('Loaded Map: $myMap');
// 读取自定义对象
MyCustomObject? myObject = await prefs.getObject('myObject', (map) => MyCustomObject.fromMap(map));
print('Loaded Object: $myObject');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SharedPreferences MoreTypes Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: saveData,
child: Text('Save Data'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: loadData,
child: Text('Load Data'),
),
],
),
),
);
}
}
class MyCustomObject {
final String name;
final int age;
MyCustomObject(this.name, this.age);
// 从Map转换为对象
MyCustomObject.fromMap(Map<String, dynamic> map)
: name = map['name'],
age = map['age'];
// 将对象转换为Map
Map<String, dynamic> toMap() {
return {
'name': name,
'age': age,
};
}
[@override](/user/override)
String toString() {
return 'MyCustomObject{name: $name, age: $age}';
}
}