From c04c9ae7b0caa3985e471cc8aa9590db70d969cb Mon Sep 17 00:00:00 2001 From: Ming Ming Date: Thu, 8 Jul 2021 02:51:34 +0800 Subject: [PATCH] Avoid potential copying of item list --- lib/widget/album_viewer.dart | 3 ++- lib/widget/archive_viewer.dart | 3 ++- lib/widget/dynamic_album_viewer.dart | 3 ++- lib/widget/home_photos.dart | 3 ++- lib/widget/selectable_item_stream_list_mixin.dart | 8 +++----- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/widget/album_viewer.dart b/lib/widget/album_viewer.dart index b30bd9c9..2fd30c96 100644 --- a/lib/widget/album_viewer.dart +++ b/lib/widget/album_viewer.dart @@ -278,7 +278,8 @@ class _AlbumViewerState extends State "[_transformItems] Unsupported file format: ${f.contentType}"); } } - }(); + }() + .toList(); } bool _shouldPropagateResyncedAlbum(Album album) { diff --git a/lib/widget/archive_viewer.dart b/lib/widget/archive_viewer.dart index 63847b31..766b5e08 100644 --- a/lib/widget/archive_viewer.dart +++ b/lib/widget/archive_viewer.dart @@ -280,7 +280,8 @@ class _ArchiveViewerState extends State "[_transformItems] Unsupported file format: ${f.contentType}"); } } - }(); + }() + .toList(); } void _reqQuery() { diff --git a/lib/widget/dynamic_album_viewer.dart b/lib/widget/dynamic_album_viewer.dart index 7486e92e..b0462be8 100644 --- a/lib/widget/dynamic_album_viewer.dart +++ b/lib/widget/dynamic_album_viewer.dart @@ -402,7 +402,8 @@ class _DynamicAlbumViewerState extends State "[_onBackingFilesUpdated] Unsupported file format: ${f.contentType}"); } } - }(); + }() + .toList(); } Album _album; diff --git a/lib/widget/home_photos.dart b/lib/widget/home_photos.dart index 09fba750..b2ebb6b0 100644 --- a/lib/widget/home_photos.dart +++ b/lib/widget/home_photos.dart @@ -483,7 +483,8 @@ class _HomePhotosState extends State "[_transformItems] Unsupported file format: ${f.contentType}"); } } - }(); + }() + .toList(); } void _reqQuery() { diff --git a/lib/widget/selectable_item_stream_list_mixin.dart b/lib/widget/selectable_item_stream_list_mixin.dart index fba6bf16..01929306 100644 --- a/lib/widget/selectable_item_stream_list_mixin.dart +++ b/lib/widget/selectable_item_stream_list_mixin.dart @@ -78,13 +78,11 @@ mixin SelectableItemStreamListMixin on State { List get itemStreamListItems => UnmodifiableListView(_items); @protected - set itemStreamListItems(Iterable newItems) { + set itemStreamListItems(List newItems) { final lastSelectedItem = _lastSelectPosition != null ? _items[_lastSelectPosition] : null; - _items.clear(); - _items.addAll(newItems); - + _items = newItems; _transformSelectedItems(); // Keep _lastSelectPosition if no changes, drop otherwise @@ -216,7 +214,7 @@ mixin SelectableItemStreamListMixin on State { int _lastSelectPosition; bool _isRangeSelectionMode = false; - final _items = []; + var _items = []; final _selectedItems = {}; final _listKey = GlobalKey();