calorimeter/lib/utils/settings_bloc.dart

40 lines
1.0 KiB
Dart
Raw Permalink Normal View History

2024-12-07 12:29:34 +00:00
/* SPDX-License-Identifier: GPL-3.0-or-later */
2024-12-07 12:39:11 +00:00
/* Copyright (C) 2024 Marco Groß <mgross@sw-gross.de> */
import 'package:flutter_bloc/flutter_bloc.dart';
2024-09-06 17:00:25 +00:00
import 'package:calorimeter/storage/storage.dart';
class SettingsDataBloc extends Bloc<SettingsEvent, SettingsState> {
final FoodStorage storage;
SettingsDataBloc(super.initialState, {required this.storage}) {
on<DailyKcalLimitUpdated>(persistDailyLimit);
}
void persistDailyLimit(
DailyKcalLimitUpdated event, Emitter<SettingsState> emit) async {
await storage.updateLimit(event.kcal);
emit(SettingsState(kcalLimit: event.kcal));
}
}
class SettingsEvent {}
class DailyKcalLimitUpdated extends SettingsEvent {
final double kcal;
DailyKcalLimitUpdated({required this.kcal});
}
class SettingsState {
final double kcalLimit;
SettingsState({required this.kcalLimit});
factory SettingsState.init() {
return SettingsState(kcalLimit: 2000);
}
static from(SettingsState state) {
return SettingsState(kcalLimit: state.kcalLimit);
}
}