diff options
Diffstat (limited to 'lib/view_model/badge_motive_view_model.dart')
-rw-r--r-- | lib/view_model/badge_motive_view_model.dart | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/view_model/badge_motive_view_model.dart b/lib/view_model/badge_motive_view_model.dart index bf2a910..6746827 100644 --- a/lib/view_model/badge_motive_view_model.dart +++ b/lib/view_model/badge_motive_view_model.dart @@ -14,18 +14,40 @@ // along with this program. If not, see <https://www.gnu.org/licenses/>. import 'package:flutter/foundation.dart'; +import 'package:logger/logger.dart'; import 'package:uvok_epaper_badge/model/badge_motive.dart'; import 'package:uvok_epaper_badge/model/motive_selection/badge_motive_selection.dart'; import 'package:uvok_epaper_badge/model/motive_selection/mock_badge_motive_selection.dart'; +Logger logger = Logger(); + class BadgeMotiveViewModel extends ChangeNotifier { final BadgeMotiveSelection _motivSelect = MockBadgeMotiveSelection(); List<BadgeMotive> _motives = []; + bool _busy = false; + bool get allowSelection => !_busy; List<BadgeMotive> get motives => _motives; Future<void> updateMotives() async { + if (_busy) return; + _busy = true; + notifyListeners(); + _motives = await _motivSelect.getMotives(); + _busy = false; + notifyListeners(); + } + + Future<void> setMotive(BadgeMotive motive) async { + if (_busy) return; + + _busy = true; + notifyListeners(); + logger.t(">Set motive to ${motive.id}"); + await _motivSelect.setCurrentMotive(motive); + logger.t("<Set motive to ${motive.id}"); + _busy = false; notifyListeners(); } } |