Flutter快速状态管理插件quick_state的使用
Flutter快速状态管理插件quick_state的使用
简介
Quick 是一个基于单例模式的状态管理工具,允许您以全局方式管理变量,并且与 flutter_secure_storage
集成良好。这使得在您的应用程序中持久化数据(如缓存、令牌等)变得非常容易。学习曲线短,实现简单,但仍然可以进行更复杂的实现以获得更高的控制力和性能。
特性
以下是 Quick 的主要功能:
notify(dynamic dependency)
:通知特定监听器更新其状态。notifyAll()
:通知所有监听器更新它们的状态。statusOf(String key)
:返回某个工作器的状态。setStatus(String key, dynamic status)
:设置某个工作器的状态。set(String key, dynamic value)
:为指定的键设置值并返回对该键的引用。make(String key, Function(dynamic) maker)
:使用函数生成器创建值并返回对该键的引用。get(String key)
:获取指定键的值。store(String key, dynamic value)
:将值存储到设备中(使用flutter_secure_storage
)。free(String key)
:移除指定键及其对应的值。ref(String key)
:返回指定键的引用。clear()
:清除所有值。lock(String key)
:锁定特定键以防止更改。unlock(String key)
:解锁之前锁定的键。on(String key, Function(dynamic params, Function(dynamic) setStatus) work)
:为指定键定义一个任务。off(String key)
:移除与指定键关联的任务。call(String key, {dynamic params})
:执行与指定键关联的任务并更新状态。caller(String key, {dynamic params})
:返回一个可以用于执行与指定键关联任务的函数。bind(dynamic obj)
:返回对象的单例实例。dispose(dynamic obj)
:移除对象的单例实例。watcher(Widget Function() build, {List ...})
:动态监听状态变化并重新构建 UI。builder({Widget Function(BuildContext context) builder, List ...})
:构建带有上下文的 widget。switcher({dynamic status, Map<dynamic, Widget> cases, List ...})
:根据状态切换不同的 widget。
快速开始
使用 Quick 无需额外配置,只需在需要的地方直接使用即可!
使用示例
以下是一个完整的示例,展示如何使用 Quick 进行状态管理:
import 'package:flutter/material.dart';
import 'package:quick_state/quick_state.dart';
void main() {
// 初始化时设置初始值
Quick.set('contador', 3);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
// 在构建过程中设置新值
Quick.set('contador', 57);
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyWidget(),
);
}
}
class MyWidget extends StatelessWidget {
const MyWidget({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Contador Flutter'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'Contagem:',
style: TextStyle(fontSize: 20),
),
// 动态监听状态并显示计数器值
Quick.watcher(
() => Text(
"Meu contador vale ${Quick.get('contador')}!",
style: const TextStyle(fontSize: 36, fontWeight: FontWeight.bold),
),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => Quick.make('contador', (c) => c + 1),
tooltip: 'Incrementar',
child: const Icon(Icons.add),
),
);
}
}
更多关于Flutter快速状态管理插件quick_state的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter快速状态管理插件quick_state的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
quick_state
是一个轻量级且易于使用的 Flutter 状态管理插件,旨在简化状态管理的过程。它通过提供一种简单的方式来管理和共享状态,使得开发者可以更专注于业务逻辑,而不是复杂的状态管理代码。
以下是如何使用 quick_state
的快速指南:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 quick_state
依赖:
dependencies:
flutter:
sdk: flutter
quick_state: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 创建状态类
创建一个状态类,它将包含你希望管理的状态。你可以使用 QuickState
类来轻松管理状态。
import 'package:quick_state/quick_state.dart';
class CounterState extends QuickState {
int _count = 0;
int get count => _count;
void increment() {
_count++;
notifyListeners(); // 通知监听者状态已更新
}
void decrement() {
_count--;
notifyListeners(); // 通知监听者状态已更新
}
}
3. 在应用中使用状态
在你的 Flutter 应用中,使用 QuickStateProvider
来提供状态,并在需要的地方访问它。
import 'package:flutter/material.dart';
import 'package:quick_state/quick_state.dart';
import 'counter_state.dart'; // 导入刚才创建的状态类
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return QuickStateProvider(
states: {
CounterState: CounterState(), // 提供状态实例
},
child: MaterialApp(
title: 'QuickState Example',
home: MyHomePage(),
),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final counterState = QuickState.of<CounterState>(context); // 获取状态实例
return Scaffold(
appBar: AppBar(
title: Text('QuickState Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Count:',
),
Text(
'${counterState.count}',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
counterState.increment(); // 调用状态方法
},
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
4. 更新 UI
当状态发生变化时,notifyListeners()
会通知所有监听者,并自动更新 UI。
5. 使用多个状态
如果你有多个状态类,可以在 QuickStateProvider
中提供多个状态实例:
QuickStateProvider(
states: {
CounterState: CounterState(),
AnotherState: AnotherState(),
},
child: MaterialApp(
title: 'QuickState Example',
home: MyHomePage(),
),
);