FolderListing: Change the scaffold when a folder is selected

This way it's way more obvious. Also, add a back button so the user can
cancel the selection more explicitly.
This commit is contained in:
Vishesh Handa
2019-12-11 21:09:40 +01:00
parent 0e8fe78323
commit 27d5af8b01
2 changed files with 28 additions and 5 deletions

View File

@ -15,6 +15,7 @@ class FolderListingScreen extends StatefulWidget {
}
class _FolderListingScreenState extends State<FolderListingScreen> {
final _folderTreeViewKey = GlobalKey<FolderTreeViewState>();
NotesFolder selectedFolder;
@override
@ -22,6 +23,7 @@ class _FolderListingScreenState extends State<FolderListingScreen> {
final notesFolder = Provider.of<NotesFolder>(context);
var treeView = FolderTreeView(
key: _folderTreeViewKey,
rootFolder: notesFolder,
onFolderEntered: (NotesFolder folder) {
var route = MaterialPageRoute(
@ -62,15 +64,28 @@ class _FolderListingScreenState extends State<FolderListingScreen> {
if (folderName is String) {
final container = StateContainer.of(context);
container.renameFolder(selectedFolder, folderName);
_folderTreeViewKey.currentState.resetSelection();
}
},
);
}
var backButton = IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
_folderTreeViewKey.currentState.resetSelection();
},
);
var title = const Text("Folder");
if (selectedFolder != null) {
title = const Text("Folder Selected");
}
return Scaffold(
appBar: AppBar(
title: const Text('Folders'),
leading: GJAppBarMenuButton(),
title: title,
leading: selectedFolder == null ? GJAppBarMenuButton() : backButton,
actions: <Widget>[
if (selectedFolder != null) action,
],

View File

@ -12,17 +12,18 @@ class FolderTreeView extends StatefulWidget {
final FolderSelectedCallback onFolderEntered;
FolderTreeView({
Key key,
@required this.rootFolder,
@required this.onFolderSelected,
@required this.onFolderUnselected,
@required this.onFolderEntered,
});
}) : super(key: key);
@override
_FolderTreeViewState createState() => _FolderTreeViewState();
FolderTreeViewState createState() => FolderTreeViewState();
}
class _FolderTreeViewState extends State<FolderTreeView> {
class FolderTreeViewState extends State<FolderTreeView> {
bool inSelectionMode = false;
NotesFolder selectedFolder;
@ -55,6 +56,13 @@ class _FolderTreeViewState extends State<FolderTreeView> {
children: <Widget>[tile],
);
}
void resetSelection() {
setState(() {
selectedFolder = null;
});
widget.onFolderUnselected();
}
}
class FolderTile extends StatefulWidget {