위젯과 로직을 분리한다는 디자인 패턴
Flutter_bloc라는 플러그인이 대표적
https://bloclibrary.dev/#/
https://pub.dev/packages/flutter_bloc
Future<void> main() async {
final cubit = CounterCubit();
final subscription = cubit.stream.listen(print); // 1
cubit.increment();
await Future.delayed(Duration.zero);
await subscription.cancel();
await cubit.close();
Note: await Future.delayed(Duration.zero) is added for this example to avoid canceling the subscription immediately.
위젯은 상태변화를 그 다음 프레임에 반영하는데
딜레이를 안넣으면 바로 subscription이 캔슬되니까 다음 프레임에 위젯에 상태변화가 안간다.
근데 딜레이를 넣으면 async니까 일단 이번 프레임은 딜레이에서 끝나고
다음 프레임에 듀레이션이 만료되었는지를 보는데 듀레이션 제로니까 만료라고 판단하고 그떄서야 subscription을 캔슬한다?