洛克的概念。
- 创造事件
- 将事件传递给BLOC
- BLOC返回状态。
lib/counter_event.dart
创建事件
abstract class CounterEvent {}
class IncrementEvent extends CounterEvent {}
class DecrementEvent extends CounterEvent {}
lib/counter_bloc.dart
将事件传递给Bloc
import 'dart:async';
class CounterBloc {
int _counter = 0;
// Cretae Stream Controller for sink data to bloc
final _counterStateController =
Stream
// For state, exposing only a stream which outputs data Stream<int> get
// Cretae Second Stream Controller for sink event to bloc
final _counterEventController = StreamController<CounterEvent>();
// For events, exposing only a sink which is an input
Sink<CounterEvent> get
-------- // Cretae Constructor
// Whenever there is a new event, we want to map it to a new state
-------- // map it to new state
void _mapEventToState(CounterEvent event)
}
--------
void dispose() { // dispose StreamController
lib/main.dart
Bloc返回状态。
import ‘package:bloc_vanilla_tut/counter_bloc.dart’;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
class _MyHomePageState extends State<MyHomePage> {
final _bloc = CounterBloc();
@override Widget build(BuildContext context) {
//StreamBuilder for UI ,without setState
StreamBuilder( stream:
Simple BLOC Code Sample- Flutter Design Pattern最初发表于Nerd For Techon Medium,在那里人们通过强调和回应这个故事继续对话。