@immutable
class SimulatorSessionState {
final int id;
final String name;
final Country destinationCountry;
final double duration;
final bool isMainSimulation;
final SimulationStats stats;
final Datetime createdAt;
final CurrencyRateModel currentCurrency;
final CurrencyRateModel otherCurrency;
@immutable
class SimulatorSessionDetailsState {
double confidenceIndicator;
SimulationStats stats;
List<SimulationDetails> simulationDetails;
SimulatorSessionDetailsState({this.confidenceIndicator, this.stats, this.simulationDetails});
SimulatorSessionDetailsState.initial();
SimulatorSessionDetailsState copyWith(double? confidenceIndicator, SimulationStats? stats, List<SimulationDetails>? simulationDetails) {
return SimulatorSessionDetailsState(confidenceIndicator: confidenceIndicator ?? this.confidenceIndicator,
stats: stats ?? this.stats,
simulationDetails: simulationDetails ?? this.simulationDetails);
}
}
class SimulationsStateNotifier extends StateNotifier<List<SimulatorSessionState>> {
final Ref _ref;
SimulatorSessionStateNotifier(this._ref) : super(SimulatorSessionState.initial());
// Let's allow the UI to add simulation.
void addSimulation(SimulatorSessionInputModel simulation);
// Let's allow removing simulation
void removeSimulation(String simulationId);
// Let's mark a simulation as principal
void setIsMainSimulation(String simulationId);
// Let's allow the UI to update simulation.
void updateSimulatorSessionModel(String simulationId, SimulatorSessionInputModel simulation);
void swapCurrencies(String simulationId);
class SimulationDetailsStateNotifier extends StateNotifier<SimulatorSessionDetailsState> {
final Ref _ref;
SimulationDetailsStateNotifier(this._ref) : super(SimulatorSessionDetailsState.initial());
// Find the Simulation Detail in the repository
void init();
// Let's allow the UI to add BudgetItem at simulationId
void addSimulatorSessionItem(String simulationId, SimulatorSessionItemInputModel budgetItem);
// Let's allow the UI removing BudgetItem at simulationId
void removeSimulatorSessionItem(String simulationId, String budgetItemId);
// Let's allow the UI updating BudgetItem at simulationId
void updateSimulatorSessionItem(String simulationId, SimulatorSessionItemInputModel budgetItem);
// Let's allow the UI to swap currencies
void swapCurrencies(String simulationId);
final simulationsStatesProvider = StateNotifierProvider<SimulationsStateNotifier, List<SimulatorSessionState>>((ref) {
return SimulationsStateNotifier();
});
final simulationDetailProvider = StateNotifierProvider<SimulationDetailsStateNotifier, SimulatorSessionDetailsState>((ref) {
return SimulationDetailsStateNotifier();
});