mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-26 16:46:51 +08:00
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:
@ -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,
|
||||
],
|
||||
|
@ -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 {
|
||||
|
Reference in New Issue
Block a user