import 'package:boardgames_app/models/user.dart'; import 'package:flutter/material.dart'; import 'package:localstorage/localstorage.dart'; class State with ChangeNotifier { static final LocalStorage _storage = LocalStorage('board_games.json'); static final State _instance = State._(); late Future ready; // Global State final GameUser user = GameUser(); State._() { ready = init(); } Future init() async { if (!(await _storage.ready)) { // TODO: Make it more resilient, in case of failures send signal, proceed? throw Exception("Failed to init the store"); } await Future.wait([ user.init(), ]); } factory State.get() { return _instance; } LocalStorage get storage { return _storage; } } mixin WithState { // state with ready storage State state = State.get(); Future init(); }