diff --git a/lib/redux/app/app_actions.dart b/lib/redux/app/app_actions.dart index 986bc2908..881c66b07 100644 --- a/lib/redux/app/app_actions.dart +++ b/lib/redux/app/app_actions.dart @@ -171,6 +171,8 @@ class PreviewEntity { class ClearPreviewStack {} +class PopPreviewStack {} + class ClearData {} class RefreshDataFailure implements StopLoading { diff --git a/lib/redux/ui/ui_reducer.dart b/lib/redux/ui/ui_reducer.dart index 7130f8809..9683fca51 100644 --- a/lib/redux/ui/ui_reducer.dart +++ b/lib/redux/ui/ui_reducer.dart @@ -298,4 +298,8 @@ Reducer> previewStackReducer = combineReducers([ (previewStack, action) { return BuiltList([]); }), + TypedReducer, PopPreviewStack>((previewStack, action) { + return BuiltList( + [...previewStack.sublist(0, previewStack.length - 1)]); + }), ]); diff --git a/lib/ui/app/view_scaffold.dart b/lib/ui/app/view_scaffold.dart index 5f753386e..b7f5dc35d 100644 --- a/lib/ui/app/view_scaffold.dart +++ b/lib/ui/app/view_scaffold.dart @@ -52,7 +52,7 @@ class ViewScaffold extends StatelessWidget { } Widget leading; - if (!isMobile(context)) { + if (isDesktop(context)) { if ((isFilter ?? false) && entity.entityType == state.uiState.filterEntityType) { leading = IconButton( @@ -61,6 +61,10 @@ class ViewScaffold extends StatelessWidget { store.dispatch(UpdateUserPreferences(showFilterSidebar: false)); }, ); + } else if (state.uiState.previewStack.isNotEmpty) { + leading = IconButton( + icon: Icon(Icons.arrow_back), + onPressed: () => store.dispatch(PopPreviewStack())); } else if (isSettings) { leading = IconButton( icon: Icon(Icons.arrow_back),