From fd2a3dbb278c7659c3aab2e24072371743e2bf0d Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Thu, 18 May 2023 23:25:03 +0530 Subject: [PATCH 1/4] Memory: Avoid waiting on db write --- lib/ui/home/memories/full_screen_memory.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/ui/home/memories/full_screen_memory.dart b/lib/ui/home/memories/full_screen_memory.dart index 3853c41f8..4df2a48cd 100644 --- a/lib/ui/home/memories/full_screen_memory.dart +++ b/lib/ui/home/memories/full_screen_memory.dart @@ -1,3 +1,4 @@ +import "dart:async"; import "dart:io"; import "package:flutter/cupertino.dart"; @@ -294,7 +295,9 @@ class _FullScreenMemoryState extends State { itemCount: widget.memories.length, controller: _pageController, onPageChanged: (index) async { - await MemoriesService.instance.markMemoryAsSeen(widget.memories[index]); + unawaited( + MemoriesService.instance.markMemoryAsSeen(widget.memories[index]), + ); if (mounted) { setState(() { _index = index; From a5b94350d0f35c4e71ed8a39afa6849c9a23d39c Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Thu, 18 May 2023 23:36:12 +0530 Subject: [PATCH 2/4] Perf: Avoid creating new pageController and dispose existing one --- lib/ui/home/memories/full_screen_memory.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/ui/home/memories/full_screen_memory.dart b/lib/ui/home/memories/full_screen_memory.dart index 4df2a48cd..5db46ef05 100644 --- a/lib/ui/home/memories/full_screen_memory.dart +++ b/lib/ui/home/memories/full_screen_memory.dart @@ -57,6 +57,7 @@ class _FullScreenMemoryState extends State { @override Widget build(BuildContext context) { + _pageController ??= PageController(initialPage: _index); final file = widget.memories[_index].file; return Scaffold( appBar: AppBar( @@ -141,6 +142,12 @@ class _FullScreenMemoryState extends State { ); } + @override + void dispose() { + _pageController?.dispose(); + super.dispose(); + } + Future onFileDeleted(Memory removedMemory) async { if (!mounted) { return; @@ -269,7 +276,6 @@ class _FullScreenMemoryState extends State { } Widget _buildSwiper() { - _pageController = PageController(initialPage: _index); return ExtentsPageView.extents( itemBuilder: (BuildContext context, int index) { if (index < widget.memories.length - 1) { From 002cd6b489ed00eca6a0281dd506754be8c950be Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Thu, 18 May 2023 23:45:19 +0530 Subject: [PATCH 3/4] Dispose pageController in detailed view --- lib/ui/viewer/file/detail_page.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/ui/viewer/file/detail_page.dart b/lib/ui/viewer/file/detail_page.dart index 1316963c1..d4ae2c710 100644 --- a/lib/ui/viewer/file/detail_page.dart +++ b/lib/ui/viewer/file/detail_page.dart @@ -87,6 +87,7 @@ class _DetailPageState extends State { @override void dispose() { + _pageController?.dispose(); SystemChrome.setEnabledSystemUIMode( SystemUiMode.manual, overlays: SystemUiOverlay.values, @@ -140,6 +141,8 @@ class _DetailPageState extends State { Widget _buildPageView() { _logger.info("Building with " + _selectedIndex.toString()); + // todo: perf.. fix this + _pageController?.dispose(); _pageController = PageController(initialPage: _selectedIndex); return PageView.builder( itemBuilder: (context, index) { From 878356070c6df71815345fc67ba7ac47eca03330 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Thu, 18 May 2023 23:49:20 +0530 Subject: [PATCH 4/4] -mMove super.initiated at top --- lib/ui/viewer/file/detail_page.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ui/viewer/file/detail_page.dart b/lib/ui/viewer/file/detail_page.dart index d4ae2c710..9dca421bc 100644 --- a/lib/ui/viewer/file/detail_page.dart +++ b/lib/ui/viewer/file/detail_page.dart @@ -77,12 +77,12 @@ class _DetailPageState extends State { @override void initState() { + super.initState(); _files = [ ...widget.config.files ]; // Make a copy since we append preceding and succeeding entries to this _selectedIndex = widget.config.selectedIndex; _preloadEntries(); - super.initState(); } @override