From bb5fae4c382cd83bc5317ffbbad688e2f1e70188 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sun, 30 Aug 2020 15:43:04 +0900 Subject: [PATCH] launch: do not wait for app names to initialize entries --- lib/utils/android_file_utils.dart | 7 +++++++ lib/widgets/filter_grid_page.dart | 23 +++++++++++++---------- lib/widgets/home_page.dart | 3 ++- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/lib/utils/android_file_utils.dart b/lib/utils/android_file_utils.dart index ccc3e9661..eec38cddf 100644 --- a/lib/utils/android_file_utils.dart +++ b/lib/utils/android_file_utils.dart @@ -1,5 +1,6 @@ import 'package:aves/services/android_app_service.dart'; import 'package:aves/services/android_file_service.dart'; +import 'package:aves/utils/change_notifier.dart'; import 'package:path/path.dart'; final AndroidFileUtils androidFileUtils = AndroidFileUtils._private(); @@ -9,6 +10,8 @@ class AndroidFileUtils { Set storageVolumes = {}; Map appNameMap = {}; + AChangeNotifier appNameChangeNotifier = AChangeNotifier(); + AndroidFileUtils._private(); Future init() async { @@ -19,8 +22,12 @@ class AndroidFileUtils { downloadPath = join(primaryStorage, 'Download'); moviesPath = join(primaryStorage, 'Movies'); picturesPath = join(primaryStorage, 'Pictures'); + } + + Future initAppNames() async { appNameMap = await AndroidAppService.getAppNames() ..addAll({'KakaoTalkDownload': 'com.kakao.talk'}); + appNameChangeNotifier.notifyListeners(); } bool isCameraPath(String path) => path != null && path.startsWith(dcimPath) && (path.endsWith('Camera') || path.endsWith('100ANDRO')); diff --git a/lib/widgets/filter_grid_page.dart b/lib/widgets/filter_grid_page.dart index 2862d2043..68f2e93c1 100644 --- a/lib/widgets/filter_grid_page.dart +++ b/lib/widgets/filter_grid_page.dart @@ -33,16 +33,19 @@ class AlbumListPage extends StatelessWidget { @override Widget build(BuildContext context) { - return StreamBuilder( - stream: source.eventBus.on(), - builder: (context, snapshot) => FilterNavigationPage( - source: source, - title: 'Albums', - filterEntries: source.getAlbumEntries(), - filterBuilder: (s) => AlbumFilter(s, source.getUniqueAlbumName(s)), - emptyBuilder: () => EmptyContent( - icon: AIcons.album, - text: 'No albums', + return AnimatedBuilder( + animation: androidFileUtils.appNameChangeNotifier, + builder: (context, child) => StreamBuilder( + stream: source.eventBus.on(), + builder: (context, snapshot) => FilterNavigationPage( + source: source, + title: 'Albums', + filterEntries: source.getAlbumEntries(), + filterBuilder: (s) => AlbumFilter(s, source.getUniqueAlbumName(s)), + emptyBuilder: () => EmptyContent( + icon: AIcons.album, + text: 'No albums', + ), ), ), ); diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index 4ff3fd2d1..2997b5119 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -47,7 +47,8 @@ class _HomePageState extends State { return; } - await androidFileUtils.init(); // 170ms + await androidFileUtils.init(); + unawaited(androidFileUtils.initAppNames()); final intentData = await ViewerService.getIntentData(); if (intentData != null) {