Flutter持久化状态管理插件riverpod_persistent_state的使用
Flutter持久化状态管理插件riverpod_persistent_state的使用
特性
将状态存储在持久化内存中,并在应用程序重启后恢复。
开始使用
安装
在项目目录中执行以下脚本,或者在 pubspec.yaml
文件中添加依赖项:
flutter pub add riverpod_persistent_state
使用方法
首先,定义一个具有唯一名称的provider,并将其用作状态提供器。
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:riverpod_persistent_state/riverpod_persistent_state.dart';
// 定义一个状态类
class AuthorizationValue {
final String token;
final bool isAuthorized;
AuthorizationValue({required this.token, required this.isAuthorized});
factory AuthorizationValue.unauthorized() {
return AuthorizationValue(token: '', isAuthorized: false);
}
factory AuthorizationValue.fromJson(Map<String, dynamic> json) {
return AuthorizationValue(
token: json['token'],
isAuthorized: json['isAuthorized'],
);
}
Map<String, dynamic> toJson() {
return {
'token': token,
'isAuthorized': isAuthorized,
};
}
}
// 创建一个持久化状态提供器
final tokenProvider = PersistentStateProvider<AuthorizationValue>(
store: HiveJsonStore(
defaultValue: () => const AuthorizationValue.unauthorized(),
fromJson: (json) => AuthorizationValue.fromJson(json),
boxName: 'token',
),
);
void main() {
runApp(ProviderScope(child: MyApp()));
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Riverpod Persistent State Example'),
),
body: Center(
child: Consumer(
builder: (context, ref, _) {
final authValue = ref.watch(tokenProvider);
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Token: ${authValue.token}'),
Text('Is Authorized: ${authValue.isAuthorized} ?'),
ElevatedButton(
onPressed: () {
// 修改状态
ref.read(tokenProvider.notifier).state = AuthorizationValue(
token: '123456',
isAuthorized: true,
);
},
child: Text('授权'),
),
],
);
},
),
),
),
);
}
}
更多关于Flutter持久化状态管理插件riverpod_persistent_state的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复