Flutter数据持久化插件hawk_meta的使用
Flutter数据持久化插件hawk_meta的使用
特性
自动为您的项目生成Hawk风格的方法调用处理器。
开始使用
在您的pubspec.yaml
文件中添加hawk_meta
和hawk_source_gen
包依赖:
dependencies:
hawk_meta:
dev_dependencies:
hawk_source_gen:
build_runner:
使用方法
- 使用
[@HawkEntryPoint](/user/HawkEntryPoint)
注解标记一个类或函数。
class UserInfo {
final String userId;
final String userToken;
final String userName;
UserInfo(this.userId, this.userToken, this.userName);
UserInfo.fromMap(Map map)
: userId = map['userId'] as String,
userToken = map['userToken'] as String,
userName = map['userName'] as String;
}
[@HawkEntryPoint](/user/HawkEntryPoint)()
class AuthService {
Future<UserInfo> login(String userId, String userToken) async {
await Future.delayed(const Duration(seconds: 2));
return UserInfo(userId, userToken, 'test');
}
}
注意: [@HawkEntryPoint](/user/HawkEntryPoint)
注解可以用于类或顶级函数/获取器/设置器。如果用于类,则该类的所有公共方法都将被注册为入口点。如果您想忽略某些元素,请使用@HawkApi(ignore: true)
注解。
- 运行以下命令以生成代码:
flutter pub run build_runner build --delete-conflicting-outputs
生成的代码将放置在您的项目的.dart_tool/build/generated/{pkg}lib/src
文件夹中,并且这些文件都具有.hawk.dart
后缀。目前,您需要手动将这些文件复制到目标文件夹。
- 然后您可以使用生成的代码来调用入口点。
void testHawk() {
final handler = HawkMethodCallDispatcher();
// 这一步是不必要的
// 如果存在,Hawk 将自动查找类型的方法 fromMap/toJson。
// 如果这不是您想要的,您可以注册自定义的 fromMap/toMap 方法。
handler.registerTypeConverter(
fromMap: (map) async => UserInfo.fromMap(map),
toMap: (UserInfo info) => {
'userId': info.userId,
'userToken': info.userToken,
'userName': info.userName,
},
);
// 这一步是必要的
handler.registerMethodCallHandler(
'AuthService',
instanceGetter: () async => AuthService(),
handlers: [HawkAuthService.handleHawkMethodCall],
);
// 将 `handler` 传递给 `IntegratedManager`
IntegratedManager.instance.init(
// 其他参数
// ...
caseList: [handler],
);
}
示例代码
以下是一个完整的示例代码,展示了如何使用hawk_meta
插件:
import 'dart:async';
import 'package:hawk_meta/hawk_meta.dart';
class UserInfo {
final String userId;
final String userToken;
final String userName;
UserInfo(this.userId, this.userToken, this.userName);
UserInfo.fromMap(Map map)
: userId = map['userId'] as String,
userToken = map['userToken'] as String,
userName = map['userName'] as String;
}
[@HawkEntryPoint](/user/HawkEntryPoint)()
class AuthService {
Future<UserInfo> login(String userId, String userToken) async {
await Future.delayed(const Duration(seconds: 2));
return UserInfo(userId, userToken, 'test');
}
}
void testHawk() {
final handler = HawkMethodCallDispatcher();
// 注册自定义的 fromMap/toMap 方法
handler.registerTypeConverter(
fromMap: (map) async => UserInfo.fromMap(map),
toMap: (UserInfo info) => {
'userId': info.userId,
'userToken': info.userToken,
'userName': info.userName,
},
);
// 注册方法调用处理器
handler.registerMethodCallHandler(
'AuthService',
instanceGetter: () async => AuthService(),
handlers: [HawkAuthService.handleHawkMethodCall],
);
// 初始化 IntegratedManager 并传递 handler
IntegratedManager.instance.init(
// 其他参数
// ...
caseList: [handler],
);
}
void main() {
testHawk();
}
更多关于Flutter数据持久化插件hawk_meta的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据持久化插件hawk_meta的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
hawk_meta
是一个用于 Flutter 应用的数据持久化插件,它基于 hawk
包,提供了简单易用的 API 来存储和检索键值对数据。hawk
是一个轻量级的、高性能的、支持多平台的键值存储库,支持异步操作和加密存储。
安装 hawk_meta
首先,你需要在 pubspec.yaml
文件中添加 hawk_meta
依赖:
dependencies:
flutter:
sdk: flutter
hawk_meta: ^0.1.0
然后运行 flutter pub get
安装依赖。
初始化 hawk_meta
在使用 hawk_meta
之前,你需要初始化它。通常在应用的 main
函数中进行初始化:
import 'package:flutter/material.dart';
import 'package:hawk_meta/hawk_meta.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await HawkMeta.init(); // 初始化 hawk_meta
runApp(MyApp());
}
存储数据
你可以使用 HawkMeta
提供的 put
方法将数据存储到本地。
await HawkMeta.put('key1', 'value1');
await HawkMeta.put('key2', 123);
await HawkMeta.put('key3', {'name': 'John', 'age': 30});
检索数据
使用 get
方法可以从本地存储中检索数据。
String? value1 = await HawkMeta.get<String>('key1');
int? value2 = await HawkMeta.get<int>('key2');
Map<String, dynamic>? value3 = await HawkMeta.get<Map<String, dynamic>>('key3');
print(value1); // 输出: value1
print(value2); // 输出: 123
print(value3); // 输出: {name: John, age: 30}
删除数据
使用 delete
方法可以删除存储的数据。
await HawkMeta.delete('key1');
检查数据是否存在
使用 containsKey
方法可以检查某个键是否存在。
bool exists = await HawkMeta.containsKey('key1');
print(exists); // 输出: false (如果 key1 已被删除)
清空所有数据
使用 clear
方法可以清空所有存储的数据。
await HawkMeta.clear();
加密存储
hawk_meta
支持加密存储数据,你可以在初始化时设置加密密钥:
await HawkMeta.init(encryptionKey: 'your-encryption-key');