import 'package:flutter/widgets.dart'; import 'package:seshat/data/repositories/bal_repository.dart'; import 'package:seshat/domain/models/bal.dart'; import 'package:seshat/utils/command.dart'; import 'package:seshat/utils/result.dart'; class BalViewModel extends ChangeNotifier { BalViewModel({required BalRepository balRepository, required this.id}) : _balRepository = balRepository { load = Command0(_load)..execute(); } final BalRepository _balRepository; Bal? _bal; int? id; Bal? get bal => _bal; /* * ================================= * =====[ COMMAND AND LOADING ]===== * ================================= */ late final Command0 load; bool isLoaded = false; Future> _load() async { final result1 = await _loadBal(); switch (result1) { case Error(): return result1; default: break; } isLoaded = true; notifyListeners(); return result1; } Future> _loadBal() async { if (id == null) { return Result.error(Exception("No id given")); } final result = await _balRepository.balById(id!); switch (result) { case Ok(): _bal = result.value; break; case Error(): break; } return result; } }