From 1c37c598abbdc8a5f64d33c7eb2337ecfdee1d2f Mon Sep 17 00:00:00 2001 From: sujan bimali Date: Fri, 26 Jan 2024 09:01:51 +0545 Subject: [PATCH] refresh_function_added_to_the_controller --- example/pubspec.lock | 50 ++++++++--------- lib/controller/file_manager_controller.dart | 6 ++ lib/file_manager.dart | 62 ++++++++++++--------- pubspec.lock | 50 ++++++++--------- 4 files changed, 92 insertions(+), 76 deletions(-) diff --git a/example/pubspec.lock b/example/pubspec.lock index b6f64e8..234315b 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.18.0" fake_async: dependency: transitive description: @@ -82,38 +82,30 @@ packages: description: flutter source: sdk version: "0.0.0" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" matcher: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" path: dependency: transitive description: @@ -203,26 +195,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -243,10 +235,10 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.6.1" vector_math: dependency: transitive description: @@ -255,6 +247,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" win32: dependency: transitive description: @@ -272,5 +272,5 @@ packages: source: hosted version: "1.0.0" sdks: - dart: ">=3.0.0-0 <4.0.0" + dart: ">=3.2.0-194.0.dev <4.0.0" flutter: ">=3.0.0" diff --git a/lib/controller/file_manager_controller.dart b/lib/controller/file_manager_controller.dart index 24d709d..75d8dd6 100644 --- a/lib/controller/file_manager_controller.dart +++ b/lib/controller/file_manager_controller.dart @@ -5,12 +5,17 @@ import 'package:flutter/widgets.dart'; class FileManagerController { final ValueNotifier _path = ValueNotifier(''); final ValueNotifier _short = ValueNotifier(SortBy.name); + final ValueNotifier _refresh = ValueNotifier(false); _updatePath(String path) { _path.value = path; titleNotifier.value = path.split('/').last; } + void refresh() { + _refresh.value = !_refresh.value; + } + /// ValueNotifier of the current directory's basename /// /// ie: @@ -26,6 +31,7 @@ class FileManagerController { /// Get ValueNotifier of path ValueNotifier get getPathNotifier => _path; + ValueNotifier get getRefreshNotifier => _refresh; /// Get ValueNotifier of SortedBy ValueNotifier get getSortedByNotifier => _short; diff --git a/lib/file_manager.dart b/lib/file_manager.dart index 27241d2..1a14b83 100755 --- a/lib/file_manager.dart +++ b/lib/file_manager.dart @@ -234,8 +234,11 @@ class _FileManagerState extends State { } } - Future> entityList(String path, SortBy sortBy) async { - List entitys = await Directory(path).list().toList(); + Future> entityList( + String path, SortBy sortBy, bool refresh) async { + List entitys = refresh + ? await Directory(path).list().toList() + : await Directory(path).list().toList(); switch (sortBy) { case SortBy.name: return entitys.sortByName; @@ -273,32 +276,39 @@ class _FileManagerState extends State { return ValueListenableBuilder( valueListenable: widget.controller.getSortedByNotifier, builder: (context, snapshot, _) { - return FutureBuilder>( - future: entityList(pathSnapshot, - widget.controller.getSortedByNotifier.value), - builder: (context, snapshot) { - if (snapshot.hasData) { - List entitys = snapshot.data!; - if (entitys.length == 0) { - return _emptyFolderWidget(); - } - if (widget.hideHiddenEntity) { - entitys = entitys.where((element) { - if (FileManager.basename(element) == "" || - FileManager.basename(element).startsWith('.')) { - return false; + return ValueListenableBuilder( + valueListenable: widget.controller.getRefreshNotifier, + builder: (context, refreshSnapshot, _) { + return FutureBuilder>( + future: entityList( + pathSnapshot, + widget.controller.getSortedByNotifier.value, + refreshSnapshot), + builder: (context, snapshot) { + if (snapshot.hasData) { + List entitys = snapshot.data!; + if (entitys.length == 0) { + return _emptyFolderWidget(); + } + if (widget.hideHiddenEntity) { + entitys = entitys.where((element) { + if (FileManager.basename(element) == "" || + FileManager.basename(element) + .startsWith('.')) { + return false; + } else { + return true; + } + }).toList(); + } + return widget.builder(context, entitys); + } else if (snapshot.hasError) { + print(snapshot.error); + return _errorPage(context, snapshot.error); } else { - return true; + return _loadingScreenWidget(); } - }).toList(); - } - return widget.builder(context, entitys); - } else if (snapshot.hasError) { - print(snapshot.error); - return _errorPage(context, snapshot.error); - } else { - return _loadingScreenWidget(); - } + }); }); }); }, diff --git a/pubspec.lock b/pubspec.lock index c191bb4..308c908 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.18.0" fake_async: dependency: transitive description: @@ -75,38 +75,30 @@ packages: description: flutter source: sdk version: "0.0.0" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" matcher: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" path: dependency: transitive description: @@ -196,26 +188,26 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -236,10 +228,10 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.6.1" vector_math: dependency: transitive description: @@ -248,6 +240,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" win32: dependency: transitive description: @@ -265,5 +265,5 @@ packages: source: hosted version: "1.0.0" sdks: - dart: ">=3.0.0-0 <4.0.0" + dart: ">=3.2.0-194.0.dev <4.0.0" flutter: ">=3.0.0"