From 99c36f32f5136bc79aee5443b169251dbc05fcc4 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Fri, 5 Feb 2021 09:42:51 +0100 Subject: [PATCH] Make Repository a consumer of RepoManager I feel like I really don't understand Provider properly and this is going to blow up in my face. --- lib/app.dart | 22 ++++++++++++++-------- lib/repository_manager.dart | 4 ++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/app.dart b/lib/app.dart index b61e6451..3a2b9ca9 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -19,6 +19,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:gitjournal/analytics.dart'; import 'package:gitjournal/app_router.dart'; import 'package:gitjournal/app_settings.dart'; +import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/iap.dart'; import 'package:gitjournal/repository.dart'; import 'package:gitjournal/repository_manager.dart'; @@ -54,16 +55,21 @@ class JournalApp extends StatefulWidget { cacheDir: cacheDir, pref: pref, ); - var repo = await repoManager.buildActiveRepository(); + await repoManager.buildActiveRepository(); Widget app = ChangeNotifierProvider.value( - value: repo, - child: Consumer( - builder: (_, repo, __) => ChangeNotifierProvider.value( - value: repo.settings, - child: ChangeNotifierProvider.value( - child: JournalApp(), - value: repo.notesFolder, + value: repoManager, + child: Consumer( + builder: (_, repoManager, __) => ChangeNotifierProvider.value( + value: repoManager.currentRepo, + child: Consumer( + builder: (_, repo, __) => ChangeNotifierProvider.value( + value: repo.settings, + child: ChangeNotifierProvider.value( + child: JournalApp(), + value: repo.notesFolder, + ), + ), ), ), ), diff --git a/lib/repository_manager.dart b/lib/repository_manager.dart index ec9ffa9e..1da51102 100644 --- a/lib/repository_manager.dart +++ b/lib/repository_manager.dart @@ -36,6 +36,8 @@ class RepositoryManager with ChangeNotifier { // From the pref load all the RepositoryInfos } + Repository get currentRepo => _repo; + Future buildActiveRepository() async { if (_repo != null) { return _repo; @@ -51,6 +53,8 @@ class RepositoryManager with ChangeNotifier { pref: pref, id: currentId, ); + + notifyListeners(); return _repo; }