selected outlet
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:injectable/injectable.dart';
|
||||
|
||||
import '../../../domain/outlet/outlet.dart';
|
||||
import '../../../infrastructure/outlet/datasource/local_data_provider.dart';
|
||||
|
||||
part 'selected_outlet_event.dart';
|
||||
part 'selected_outlet_state.dart';
|
||||
part 'selected_outlet_bloc.freezed.dart';
|
||||
|
||||
@injectable
|
||||
class SelectedOutletBloc
|
||||
extends Bloc<SelectedOutletEvent, SelectedOutletState> {
|
||||
final OutletLocalDataProvider _localDataProvider;
|
||||
|
||||
SelectedOutletBloc(this._localDataProvider)
|
||||
: super(SelectedOutletState.initial()) {
|
||||
on<SelectedOutletEvent>(_onSelectedOutletEvent);
|
||||
}
|
||||
|
||||
Future<void> _onSelectedOutletEvent(
|
||||
SelectedOutletEvent event,
|
||||
Emitter<SelectedOutletState> emit,
|
||||
) {
|
||||
return event.map(
|
||||
loaded: (e) async {
|
||||
final savedId = _localDataProvider.getSelectedOutletId();
|
||||
emit(state.copyWith(selectedOutletId: savedId));
|
||||
},
|
||||
selected: (e) async {
|
||||
await _localDataProvider.saveSelectedOutletId(e.outlet.id);
|
||||
emit(
|
||||
state.copyWith(
|
||||
selectedOutlet: e.outlet,
|
||||
selectedOutletId: e.outlet.id,
|
||||
),
|
||||
);
|
||||
},
|
||||
cleared: (e) async {
|
||||
await _localDataProvider.deleteSelectedOutletId();
|
||||
emit(SelectedOutletState.initial());
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user