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.
This commit is contained in:
Vishesh Handa
2021-02-05 09:42:51 +01:00
parent bff9162858
commit 99c36f32f5
2 changed files with 18 additions and 8 deletions

View File

@ -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,19 +55,24 @@ class JournalApp extends StatefulWidget {
cacheDir: cacheDir,
pref: pref,
);
var repo = await repoManager.buildActiveRepository();
await repoManager.buildActiveRepository();
Widget app = ChangeNotifierProvider.value(
value: repo,
value: repoManager,
child: Consumer<RepositoryManager>(
builder: (_, repoManager, __) => ChangeNotifierProvider.value(
value: repoManager.currentRepo,
child: Consumer<Repository>(
builder: (_, repo, __) => ChangeNotifierProvider.value(
builder: (_, repo, __) => ChangeNotifierProvider<Settings>.value(
value: repo.settings,
child: ChangeNotifierProvider.value(
child: ChangeNotifierProvider<NotesFolderFS>.value(
child: JournalApp(),
value: repo.notesFolder,
),
),
),
),
),
);
app = ChangeNotifierProvider.value(

View File

@ -36,6 +36,8 @@ class RepositoryManager with ChangeNotifier {
// From the pref load all the RepositoryInfos
}
Repository get currentRepo => _repo;
Future<Repository> buildActiveRepository() async {
if (_repo != null) {
return _repo;
@ -51,6 +53,8 @@ class RepositoryManager with ChangeNotifier {
pref: pref,
id: currentId,
);
notifyListeners();
return _repo;
}