Flutter本地存储插件wepin_flutter_storage的使用
Flutter本地存储插件wepin_flutter_storage的使用
简介
wepin_flutter_storage
是一个专门为 Flutter 开发的本地存储插件。它适用于 Android 和 iOS 环境。
安装
在你的 pubspec.yaml
文件中添加 wepin_flutter_storage
依赖:
dependencies:
wepin_flutter_storage: ^1.0.0
或者运行以下命令:
flutter pub add wepin_flutter_storage
使用示例
以下是完整的示例代码,展示了如何使用 wepin_flutter_storage
插件进行本地存储操作。
示例代码
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:wepin_flutter_storage/wepin_flutter_storage.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: StorageTestScreen(),
);
}
}
class StorageTestScreen extends StatefulWidget {
const StorageTestScreen({super.key});
[@override](/user/override)
State<StorageTestScreen> createState() => _StorageTestScreenState();
}
class _StorageTestScreenState extends State<StorageTestScreen> {
final WepinStorage wepinStorage = WepinStorage(appId: "testApp");
String selectedKey = StorageDataType.firebaseWepin; // 默认选择键
final TextEditingController valueController = TextEditingController();
String? storedValue;
Map<String, dynamic>? allData;
[@override](/user/override)
void initState() {
super.initState();
wepinStorage.init();
}
Future<void> saveData() async {
final value = valueController.text;
if (value.isEmpty) return;
try {
final parsedValue = _parseValueForKey(selectedKey, value);
await wepinStorage.setLocalStorage(selectedKey, parsedValue);
setState(() {
storedValue = "✅ 保存成功!";
});
} catch (e) {
setState(() {
storedValue = "⚠️ 错误: ${e.toString()}";
});
}
}
Future<void> loadData() async {
final data = await wepinStorage.getLocalStorage(selectedKey);
setState(() {
storedValue = data?.toString() ?? "没有数据!";
});
}
Future<void> loadAllData() async {
final data = await wepinStorage.getAllLocalStorage();
setState(() {
allData = data;
});
}
Future<void> clearData() async {
await wepinStorage.clearAllLocalStorage();
setState(() {
storedValue = "所有数据已删除!";
allData = null;
});
}
/// 根据StorageDataType解析值
dynamic _parseValueForKey(String key, String value) {
switch (key) {
case StorageDataType.firebaseWepin:
return IFirebaseWepin.fromJson(jsonDecode(value));
// case StorageDataType.wepinConnectUser:
// return WepinUser.fromJson(jsonDecode(value));
case StorageDataType.userId:
case StorageDataType.walletId:
return value; // 字符串
// case StorageDataType.userStatus:
// return WepinUserStatus.fromJson(jsonDecode(value));
case StorageDataType.userInfo:
return jsonDecode(value); // JSON 数据
case StorageDataType.oauthProviderPending:
return value.toLowerCase() == "true"; // 转换为布尔值
default:
throw ArgumentError("不支持的键!");
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("WepinStorage 测试应用")),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text("📌 选择要保存的键"),
DropdownButton<String>(
value: selectedKey,
items: StorageDataType.all
.cast<String>() // List<dynamic> -> List<String> 转换
.map<DropdownMenuItem<String>>((key) => DropdownMenuItem<String>(
value: key,
child: Text(key),
))
.toList(),
onChanged: (key) {
if (key != null) {
setState(() {
selectedKey = key;
});
}
},
),
const SizedBox(height: 10),
TextField(
controller: valueController,
decoration: const InputDecoration(
labelText: "输入值",
hintText: "JSON格式或正确数据",
),
),
const SizedBox(height: 20),
Row(
children: [
ElevatedButton(
onPressed: saveData,
child: const Text("保存"),
),
const SizedBox(width: 10),
ElevatedButton(
onPressed: loadData,
child: const Text("加载"),
),
const SizedBox(width: 10),
ElevatedButton(
onPressed: clearData,
child: const Text("清除所有数据"),
),
],
),
const SizedBox(height: 20),
Text("📌 已保存的值: ${storedValue ?? '无'}"),
const SizedBox(height: 10),
ElevatedButton(
onPressed: loadAllData,
child: const Text("加载所有数据"),
),
const SizedBox(height: 10),
Text("📌 所有数据: ${allData?.toString() ?? '无'}"),
],
),
),
);
}
}
更多关于Flutter本地存储插件wepin_flutter_storage的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter本地存储插件wepin_flutter_storage的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
wepin_flutter_storage
是一个用于 Flutter 的本地存储插件,提供了简单易用的 API 来进行数据的存储和读取。下面是如何使用 wepin_flutter_storage
插件的基本步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 wepin_flutter_storage
插件的依赖:
dependencies:
flutter:
sdk: flutter
wepin_flutter_storage: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在需要使用 wepin_flutter_storage
的 Dart 文件中导入插件:
import 'package:wepin_flutter_storage/wepin_flutter_storage.dart';
3. 初始化插件
在应用程序启动时初始化 wepin_flutter_storage
插件:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await WepinFlutterStorage.initialize();
runApp(MyApp());
}
4. 存储数据
使用 WepinFlutterStorage
提供的 API 来存储数据。例如,存储一个字符串:
await WepinFlutterStorage.setString('key', 'value');
5. 读取数据
使用 WepinFlutterStorage
提供的 API 来读取数据。例如,读取一个字符串:
String value = await WepinFlutterStorage.getString('key');
print(value); // 输出: value
6. 删除数据
你可以使用 WepinFlutterStorage
提供的 API 来删除数据。例如,删除一个键值对:
await WepinFlutterStorage.remove('key');
7. 清除所有数据
如果你想清除所有存储的数据,可以使用以下方法:
await WepinFlutterStorage.clear();
8. 其他数据类型
wepin_flutter_storage
还支持存储其他数据类型,如 int
、double
、bool
和 Map
。例如:
// 存储整数
await WepinFlutterStorage.setInt('intKey', 42);
// 读取整数
int intValue = await WepinFlutterStorage.getInt('intKey');
// 存储布尔值
await WepinFlutterStorage.setBool('boolKey', true);
// 读取布尔值
bool boolValue = await WepinFlutterStorage.getBool('boolKey');
// 存储Map
await WepinFlutterStorage.setMap('mapKey', {'name': 'John', 'age': 30});
// 读取Map
Map<String, dynamic> mapValue = await WepinFlutterStorage.getMap('mapKey');
9. 检查键是否存在
你可以检查某个键是否存在:
bool exists = await WepinFlutterStorage.containsKey('key');
print(exists); // 输出: true 或 false
10. 获取所有键
你可以获取所有存储的键:
List<String> keys = await WepinFlutterStorage.getAllKeys();
print(keys); // 输出所有存储的键