Flutter状态管理插件bloc_pod的使用
Flutter状态管理插件bloc_pod的使用
Pod
⚠️ 状态:实验性
一个依赖注入和状态管理库,快速、简单且可组合。
包 | Pub |
---|---|
pod | |
flutter_pod | |
bloc_pod |
快速开始
import 'package:flutter/material.dart';
import 'package:flutter_pod/flutter_pod.dart';
import 'package:bloc_pod/bloc_pod.dart';
/// 计数器事件
sealed class CounterEvent {}
final class CounterIncrementPressed extends CounterEvent {}
/// 计数器BLoC
class CounterBloc extends Bloc<CounterEvent, int> {
CounterBloc() : super(0) {
on<CounterIncrementPressed>((event, emit) => emit(state + 1));
}
}
/// 创建一个BLoC Pod
final counterBloc = blocPod<CounterBloc, int>((_) => CounterBloc());
/// 在Widget中使用计数器BLoC
///
/// 需要添加并导入flutter_pod
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
final counter = context.watch(counterBloc);
return Scaffold(
appBar: AppBar(),
body: Center(
child: Text('$counter'),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
context.read(counterBloc.notifier).add(CounterIncrementPressed());
},
child: const Icon(Icons.add),
),
);
}
}
完整示例Demo
import 'package:bloc_pod/bloc_pod.dart';
/// 计数器事件
sealed class CounterEvent {}
final class CounterIncrementPressed extends CounterEvent {}
/// 计数器BLoC
class CounterBloc extends Bloc<CounterEvent, int> {
CounterBloc() : super(0) {
on<CounterIncrementPressed>((event, emit) => emit(state + 1));
}
}
/// 创建一个计数器BLoC Pod
final counterBloc = blocPod<CounterBloc, int>((_) => CounterBloc());
void main() async {
// 创建一个Pod容器。
final container = PodContainer();
// 打印计数器BLoC Pod的值。
print(container.get(counterBloc)); // 0
// 订阅计数器BLoC Pod的值变化。
final cancelSubscribe = container.subscribe(counterBloc, (value) {
print(value); // 1
});
// 增加计数器BLoC的值。
container.get(counterBloc.notifier).add(CounterIncrementPressed());
/// 等待下一个事件循环迭代
/// 以确保事件已处理。
await Future<void>.delayed(Duration.zero);
// 取消计数器BLoC Pod的订阅。
cancelSubscribe();
}
更多关于Flutter状态管理插件bloc_pod的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复