FolderListing: Hook it up to the JournalListing

Now clicking on a Folder shows all the notes from that folder. You can
even modify the notes, but deleting and adding notes won't work
correctly right now.
This commit is contained in:
Vishesh Handa
2019-12-04 01:30:23 +01:00
parent d607bad299
commit 50b8238c27
2 changed files with 26 additions and 14 deletions

View File

@ -4,6 +4,9 @@ import 'package:gitjournal/widgets/app_bar_menu_button.dart';
import 'package:gitjournal/widgets/app_drawer.dart'; import 'package:gitjournal/widgets/app_drawer.dart';
import 'package:gitjournal/widgets/folder_tree_view.dart'; import 'package:gitjournal/widgets/folder_tree_view.dart';
import 'package:gitjournal/state_container.dart'; import 'package:gitjournal/state_container.dart';
import 'package:gitjournal/note_folder.dart';
import 'journal_listing.dart';
class FolderListingScreen extends StatelessWidget { class FolderListingScreen extends StatelessWidget {
@override @override
@ -11,7 +14,17 @@ class FolderListingScreen extends StatelessWidget {
final container = StateContainer.of(context); final container = StateContainer.of(context);
final appState = container.appState; final appState = container.appState;
var treeView = FolderTreeView(appState.noteFolder); var treeView = FolderTreeView(
rootFolder: appState.noteFolder,
onFolderSelected: (NoteFolder folder) {
var route = MaterialPageRoute(
builder: (context) => JournalListingScreen(
noteFolder: folder,
),
);
Navigator.of(context).push(route);
},
);
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(

View File

@ -2,12 +2,16 @@ import 'package:flutter/material.dart';
import 'package:gitjournal/note_folder.dart'; import 'package:gitjournal/note_folder.dart';
typedef void ParentSelectChanged(bool isSelected); typedef void FolderSelectedCallback(NoteFolder folder);
class FolderTreeView extends StatelessWidget { class FolderTreeView extends StatelessWidget {
final NoteFolder rootFolder; final NoteFolder rootFolder;
final FolderSelectedCallback onFolderSelected;
FolderTreeView(this.rootFolder); FolderTreeView({
@required this.rootFolder,
@required this.onFolderSelected,
});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -15,7 +19,7 @@ class FolderTreeView extends StatelessWidget {
rootFolder.entities.forEach((entity) { rootFolder.entities.forEach((entity) {
if (entity.isNote) return; if (entity.isNote) return;
folderTiles.add(FolderTile(entity.folder)); folderTiles.add(FolderTile(entity.folder, onFolderSelected));
}); });
return ListView( return ListView(
@ -26,9 +30,9 @@ class FolderTreeView extends StatelessWidget {
class FolderTile extends StatefulWidget { class FolderTile extends StatefulWidget {
final NoteFolder folder; final NoteFolder folder;
//final ParentSelectChanged callback; final FolderSelectedCallback onFolderSelected;
FolderTile(this.folder); FolderTile(this.folder, this.onFolderSelected);
@override @override
FolderTileState createState() => FolderTileState(); FolderTileState createState() => FolderTileState();
@ -50,7 +54,7 @@ class FolderTileState extends State<FolderTile> {
children: <Widget>[ children: <Widget>[
GestureDetector( GestureDetector(
child: _buildFolderTile(), child: _buildFolderTile(),
onTap: expand, onTap: () => widget.onFolderSelected(widget.folder),
), ),
_getChild(), _getChild(),
], ],
@ -77,23 +81,18 @@ class FolderTileState extends State<FolderTile> {
} }
void expand() { void expand() {
//if (widget.callback != null) widget.callback(_isExpanded);
setState(() { setState(() {
_isExpanded = _toggleBool(_isExpanded); _isExpanded = !_isExpanded;
}); });
} }
bool _toggleBool(bool b) {
return b ? false : true;
}
Widget _getChild() { Widget _getChild() {
if (!_isExpanded) return Container(); if (!_isExpanded) return Container();
var children = <FolderTile>[]; var children = <FolderTile>[];
widget.folder.entities.forEach((entity) { widget.folder.entities.forEach((entity) {
if (entity.isNote) return; if (entity.isNote) return;
children.add(FolderTile(entity.folder)); children.add(FolderTile(entity.folder, widget.onFolderSelected));
}); });
return Container( return Container(