diff --git a/app/lib/widget/viewer.dart b/app/lib/widget/viewer.dart index e1aee3e9..08b1addd 100644 --- a/app/lib/widget/viewer.dart +++ b/app/lib/widget/viewer.dart @@ -33,6 +33,7 @@ import 'package:nc_photos/set_as_handler.dart'; import 'package:nc_photos/share_handler.dart'; import 'package:nc_photos/snack_bar_manager.dart'; import 'package:nc_photos/theme.dart'; +import 'package:nc_photos/widget/app_intermediate_circular_progress_indicator.dart'; import 'package:nc_photos/widget/disposable.dart'; import 'package:nc_photos/widget/file_content_view.dart'; import 'package:nc_photos/widget/handler/remove_selection_handler.dart'; diff --git a/app/lib/widget/viewer/bloc.dart b/app/lib/widget/viewer/bloc.dart index 454e2d61..31aa4386 100644 --- a/app/lib/widget/viewer/bloc.dart +++ b/app/lib/widget/viewer/bloc.dart @@ -17,7 +17,7 @@ class _Bloc extends Bloc<_Event, _State> fileIds: fileIds, index: startIndex, currentFile: - filesController.stream.value.dataMap[fileIds[startIndex]]!, + filesController.stream.value.dataMap[fileIds[startIndex]], appBarButtons: prefController.viewerAppBarButtonsValue, bottomAppBarButtons: prefController.viewerBottomAppBarButtonsValue, )) { @@ -139,15 +139,19 @@ class _Bloc extends Bloc<_Event, _State> _log.info(ev); final fileId = state.fileIdOrders[ev.index]; final fileState = state.fileStates[fileId] ?? _PageState.create(); + final file = state.files[fileId]; emit(state.copyWith( index: ev.index, - currentFile: state.files[fileId], + currentFile: file, fileStates: state.fileStates[fileId] == null ? state.fileStates.addedAll({fileId: fileState}) : null, currentFileState: fileState, isInitialLoad: false, )); + if (file == null) { + filesController.queryByFileId([fileId]); + } } void _onRequestPage(_RequestPage ev, _Emitter emit) { diff --git a/app/lib/widget/viewer/state_event.dart b/app/lib/widget/viewer/state_event.dart index 7fa21373..b3e6a8c6 100644 --- a/app/lib/widget/viewer/state_event.dart +++ b/app/lib/widget/viewer/state_event.dart @@ -35,7 +35,7 @@ class _State { factory _State.init({ required List fileIds, required int index, - required FileDescriptor currentFile, + required FileDescriptor? currentFile, required List appBarButtons, required List bottomAppBarButtons, }) => diff --git a/app/lib/widget/viewer/view.dart b/app/lib/widget/viewer/view.dart index 609430ff..ff27e9b3 100644 --- a/app/lib/widget/viewer/view.dart +++ b/app/lib/widget/viewer/view.dart @@ -229,7 +229,7 @@ class _PageViewState extends State<_PageView> { builder: (context, file) { if (file == null) { return const Center( - child: Text("File not found"), + child: AppIntermediateCircularProgressIndicator(), ); } else { return FractionallySizedBox(