From a80b54765698e2609f39af9cb1a66b3ad93b8481 Mon Sep 17 00:00:00 2001 From: lukas-heiligenbrunner Date: Tue, 27 Sep 2022 17:17:15 +0200 Subject: [PATCH] pop menu when selecting drawer item default to documents folder --- lib/data_provider/local_data_provider.dart | 4 ++-- lib/home_page.dart | 13 +++++++++++-- lib/image_grid.dart | 5 +---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/data_provider/local_data_provider.dart b/lib/data_provider/local_data_provider.dart index 961439f..b6c7efa 100644 --- a/lib/data_provider/local_data_provider.dart +++ b/lib/data_provider/local_data_provider.dart @@ -4,7 +4,7 @@ import 'package:flutter/cupertino.dart'; import 'package:gallery/data_provider/data_provider.dart'; class LocalDataProvider extends DataProvider { - final String initialPath; + final Future initialPath; LocalDataProvider(this.initialPath); @@ -13,7 +13,7 @@ class LocalDataProvider extends DataProvider { @override Future listOfFiles({Uri? uri}) async { - final dir = uri != null ? Directory.fromUri(uri) : Directory(initialPath); + final dir = uri != null ? Directory.fromUri(uri) : await initialPath; final list = dir.listSync(); final List res = []; diff --git a/lib/home_page.dart b/lib/home_page.dart index 662541c..6afa4f9 100644 --- a/lib/home_page.dart +++ b/lib/home_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:gallery/data_provider/data_provider.dart'; import 'package:gallery/image_grid.dart'; +import 'package:path_provider/path_provider.dart'; import 'data_provider/local_data_provider.dart'; import 'data_provider/ssh_data_provider.dart'; @@ -19,17 +20,23 @@ enum Page { local, remote } class _MyHomePageState extends State { Page page = Page.local; + final DataProvider localProvider = LocalDataProvider(getApplicationDocumentsDirectory()); + Widget _buildPage() { DataProvider provider; switch (page) { case Page.local: - provider = LocalDataProvider("/home"); + provider = localProvider; break; case Page.remote: // todo do not generate a new provider on each tab switch provider = SSHDataProvider( - initialPath: "/", host: "", password: "", port: 0, username: ""); + initialPath: "/", + host: "", + password: "", + port: 0, + username: ""); break; } return ImageGrid(dProvider: provider); @@ -58,6 +65,7 @@ class _MyHomePageState extends State { setState(() { page = Page.local; }); + Navigator.pop(context); }, ), ListTile( @@ -66,6 +74,7 @@ class _MyHomePageState extends State { setState(() { page = Page.remote; }); + Navigator.pop(context); }, ), ], diff --git a/lib/image_grid.dart b/lib/image_grid.dart index fcfef2a..28e35c1 100644 --- a/lib/image_grid.dart +++ b/lib/image_grid.dart @@ -30,10 +30,7 @@ class _ImageGridState extends State { final width = MediaQuery.of(context).size.width; return FutureBuilder( - future: (() async { - await widget.dProvider.connect(); - return folder; - }).call(), + future: folder, builder: (context, AsyncSnapshot snapshot) { if (snapshot.connectionState == ConnectionState.done) { if (snapshot.hasData && snapshot.data != null) {