mirror of
https://github.com/immich-app/immich.git
synced 2026-03-22 09:00:58 +03:00
fix(mobile): set correct initial system-ui mode in asset viewer (#26500)
* fix: set correct initial system-ui mode on asset open * move to function and add details visibility to initial state logic * switch to ref.read
This commit is contained in:
@@ -117,6 +117,9 @@ class _AssetViewerState extends ConsumerState<AssetViewer> {
|
|||||||
_reloadSubscription = EventStream.shared.listen(_onEvent);
|
_reloadSubscription = EventStream.shared.listen(_onEvent);
|
||||||
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback(_onAssetInit);
|
WidgetsBinding.instance.addPostFrameCallback(_onAssetInit);
|
||||||
|
|
||||||
|
final assetViewer = ref.read(assetViewerProvider);
|
||||||
|
_setSystemUIMode(assetViewer.showingControls, assetViewer.showingDetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -226,6 +229,13 @@ class _AssetViewerState extends ConsumerState<AssetViewer> {
|
|||||||
_onAssetChanged(index);
|
_onAssetChanged(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _setSystemUIMode(bool controls, bool details) {
|
||||||
|
final mode = !controls || (CurrentPlatform.isIOS && details)
|
||||||
|
? SystemUiMode.immersiveSticky
|
||||||
|
: SystemUiMode.edgeToEdge;
|
||||||
|
unawaited(SystemChrome.setEnabledSystemUIMode(mode));
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final showingControls = ref.watch(assetViewerProvider.select((s) => s.showingControls));
|
final showingControls = ref.watch(assetViewerProvider.select((s) => s.showingControls));
|
||||||
@@ -245,10 +255,7 @@ class _AssetViewerState extends ConsumerState<AssetViewer> {
|
|||||||
|
|
||||||
ref.listen(assetViewerProvider.select((value) => (value.showingControls, value.showingDetails)), (_, state) {
|
ref.listen(assetViewerProvider.select((value) => (value.showingControls, value.showingDetails)), (_, state) {
|
||||||
final (controls, details) = state;
|
final (controls, details) = state;
|
||||||
final mode = !controls || (CurrentPlatform.isIOS && details)
|
_setSystemUIMode(controls, details);
|
||||||
? SystemUiMode.immersiveSticky
|
|
||||||
: SystemUiMode.edgeToEdge;
|
|
||||||
unawaited(SystemChrome.setEnabledSystemUIMode(mode));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return PopScope(
|
return PopScope(
|
||||||
|
|||||||
Reference in New Issue
Block a user