mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 10:17:16 +08:00
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:
@ -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(
|
||||||
|
@ -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(
|
||||||
|
Reference in New Issue
Block a user