BLoC (cubit) を使用してフラッターで非同期カウンター アプリを作成しています。ローディング状態を発行すると、カウンターがインクリメントせずに 0 に戻ります。この問題を解決するにはどうすればよいですか?
コード:
import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';
part 'counter_state.dart';
class CounterCubit extends Cubit<CounterState> {
CounterCubit() : super(Counter(counter: 0));
void increment() {
print('before CounterLoading() ${state.counter}');
emit(CounterLoading());
print('after CounterLoading() ${state.counter}');
Timer(Duration(seconds: 2), () {
emit(CounterLoaded());
print('enter code hereprevious state ${state.counter}');
emit(Counter(counter: state.counter + 1));
print('next state ${state.counter}');
});
}
}
part of 'counter_cubit.dart';
@immutable
abstract class CounterState {
final int counter = 0;
}
class Counter extends CounterState {
final int counter;
Counter({this.counter});
}
class CounterLoading extends CounterState {
CounterLoading();
}
class CounterLoaded extends CounterState {
CounterLoaded();
}