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<AlbumViewer>
               "[_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<ArchiveViewer>
               "[_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<DynamicAlbumViewer>
               "[_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<HomePhotos>
               "[_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<T extends StatefulWidget> on State<T> {
   List<SelectableItem> get itemStreamListItems => UnmodifiableListView(_items);
 
   @protected
-  set itemStreamListItems(Iterable<SelectableItem> newItems) {
+  set itemStreamListItems(List<SelectableItem> 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<T extends StatefulWidget> on State<T> {
   int _lastSelectPosition;
   bool _isRangeSelectionMode = false;
 
-  final _items = <SelectableItem>[];
+  var _items = <SelectableItem>[];
   final _selectedItems = <SelectableItem>{};
 
   final _listKey = GlobalKey();