Flutter Bloc模式 #
一、Bloc基础 #
1.1 安装 #
yaml
dependencies:
flutter_bloc: ^8.1.3
1.2 核心概念 #
Bloc模式基于事件驱动:
text
Event → Bloc → State
二、基本用法 #
2.1 定义事件 #
dart
abstract class CounterEvent {}
class Increment extends CounterEvent {}
class Decrement extends CounterEvent {}
2.2 定义Bloc #
dart
class CounterBloc extends Bloc<CounterEvent, int> {
CounterBloc() : super(0) {
on<Increment>((event, emit) => emit(state + 1));
on<Decrement>((event, emit) => emit(state - 1));
}
}
2.3 使用Bloc #
dart
class CounterPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (_) => CounterBloc(),
child: Scaffold(
body: BlocBuilder<CounterBloc, int>(
builder: (context, count) => Text('$count'),
),
floatingActionButton: Column(
children: [
FloatingActionButton(
onPressed: () => context.read<CounterBloc>().add(Increment()),
child: Icon(Icons.add),
),
FloatingActionButton(
onPressed: () => context.read<CounterBloc>().add(Decrement()),
child: Icon(Icons.remove),
),
],
),
),
);
}
}
三、Cubit #
3.1 定义Cubit #
dart
class CounterCubit extends Cubit<int> {
CounterCubit() : super(0);
void increment() => emit(state + 1);
void decrement() => emit(state - 1);
}
3.2 使用Cubit #
dart
BlocProvider(
create: (_) => CounterCubit(),
child: BlocBuilder<CounterCubit, int>(
builder: (context, count) => Text('$count'),
),
)
四、总结 #
4.1 核心概念 #
| 概念 | 说明 |
|---|---|
| Event | 触发状态变化的事件 |
| State | 应用状态 |
| Bloc | 处理事件并发出状态 |
| Cubit | 简化版Bloc |
| BlocBuilder | 监听状态变化 |
4.2 下一步 #
让我们学习 导航基础!
最后更新:2026-03-28