diff --git a/lib/screens/folder_listing.dart b/lib/screens/folder_listing.dart index dfc72bc2..596fcc51 100644 --- a/lib/screens/folder_listing.dart +++ b/lib/screens/folder_listing.dart @@ -4,6 +4,9 @@ import 'package:gitjournal/widgets/app_bar_menu_button.dart'; import 'package:gitjournal/widgets/app_drawer.dart'; import 'package:gitjournal/widgets/folder_tree_view.dart'; import 'package:gitjournal/state_container.dart'; +import 'package:gitjournal/note_folder.dart'; + +import 'journal_listing.dart'; class FolderListingScreen extends StatelessWidget { @override @@ -11,7 +14,17 @@ class FolderListingScreen extends StatelessWidget { final container = StateContainer.of(context); 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( appBar: AppBar( diff --git a/lib/widgets/folder_tree_view.dart b/lib/widgets/folder_tree_view.dart index 5c57955a..d034681d 100644 --- a/lib/widgets/folder_tree_view.dart +++ b/lib/widgets/folder_tree_view.dart @@ -2,12 +2,16 @@ import 'package:flutter/material.dart'; import 'package:gitjournal/note_folder.dart'; -typedef void ParentSelectChanged(bool isSelected); +typedef void FolderSelectedCallback(NoteFolder folder); class FolderTreeView extends StatelessWidget { final NoteFolder rootFolder; + final FolderSelectedCallback onFolderSelected; - FolderTreeView(this.rootFolder); + FolderTreeView({ + @required this.rootFolder, + @required this.onFolderSelected, + }); @override Widget build(BuildContext context) { @@ -15,7 +19,7 @@ class FolderTreeView extends StatelessWidget { rootFolder.entities.forEach((entity) { if (entity.isNote) return; - folderTiles.add(FolderTile(entity.folder)); + folderTiles.add(FolderTile(entity.folder, onFolderSelected)); }); return ListView( @@ -26,9 +30,9 @@ class FolderTreeView extends StatelessWidget { class FolderTile extends StatefulWidget { final NoteFolder folder; - //final ParentSelectChanged callback; + final FolderSelectedCallback onFolderSelected; - FolderTile(this.folder); + FolderTile(this.folder, this.onFolderSelected); @override FolderTileState createState() => FolderTileState(); @@ -50,7 +54,7 @@ class FolderTileState extends State { children: [ GestureDetector( child: _buildFolderTile(), - onTap: expand, + onTap: () => widget.onFolderSelected(widget.folder), ), _getChild(), ], @@ -77,23 +81,18 @@ class FolderTileState extends State { } void expand() { - //if (widget.callback != null) widget.callback(_isExpanded); setState(() { - _isExpanded = _toggleBool(_isExpanded); + _isExpanded = !_isExpanded; }); } - bool _toggleBool(bool b) { - return b ? false : true; - } - Widget _getChild() { if (!_isExpanded) return Container(); var children = []; widget.folder.entities.forEach((entity) { if (entity.isNote) return; - children.add(FolderTile(entity.folder)); + children.add(FolderTile(entity.folder, widget.onFolderSelected)); }); return Container(