Files
GitJournal/lib/screens/home_screen.dart
Vishesh Handa 7fd1c99287 Use Provider's context.read/watch
Instead of the legacy Provider.of. Less scope of bugs this way and the
code is so much nicer to read.
2023-12-06 08:20:40 +01:00

63 lines
1.6 KiB
Dart

/*
* SPDX-FileCopyrightText: 2019-2021 Vishesh Handa <me@vhanda.in>
*
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import 'package:flutter/material.dart';
import 'package:gitjournal/core/folder/flattened_notes_folder.dart';
import 'package:gitjournal/core/folder/notes_folder.dart';
import 'package:gitjournal/core/folder/notes_folder_fs.dart';
import 'package:gitjournal/folder_views/folder_view.dart';
import 'package:gitjournal/l10n.dart';
import 'package:gitjournal/repository.dart';
import 'package:gitjournal/screens/cache_loading_screen.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:provider/provider.dart';
class HomeScreen extends StatefulWidget {
static const routePath = '/';
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
NotesFolder? notesFolder;
NotesFolderFS? rootFolder;
@override
void initState() {
super.initState();
initializeDateFormatting();
}
Future<void> _initFolder() async {
if (!mounted) return;
var root = context.watch<NotesFolderFS>();
if (root != rootFolder) {
rootFolder = root;
notesFolder = FlattenedNotesFolder(
root,
title: context.loc.screensHomeAllNotes,
);
}
}
@override
Widget build(BuildContext context) {
_initFolder();
if (notesFolder == null) {
return Container();
}
var repo = context.watch<GitJournalRepo>();
if (!repo.fileStorageCacheReady) {
return const CacheLoadingScreen();
}
return FolderView(notesFolder: notesFolder!);
}
}