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:
Noel S 2026-02-26 09:10:46 -07:00 committed by GitHub
parent e454c3566b
commit ded8d4e2b4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -117,6 +117,9 @@ class _AssetViewerState extends ConsumerState<AssetViewer> {
_reloadSubscription = EventStream.shared.listen(_onEvent);
WidgetsBinding.instance.addPostFrameCallback(_onAssetInit);
final assetViewer = ref.read(assetViewerProvider);
_setSystemUIMode(assetViewer.showingControls, assetViewer.showingDetails);
}
@override
@ -226,6 +229,13 @@ class _AssetViewerState extends ConsumerState<AssetViewer> {
_onAssetChanged(index);
}
void _setSystemUIMode(bool controls, bool details) {
final mode = !controls || (CurrentPlatform.isIOS && details)
? SystemUiMode.immersiveSticky
: SystemUiMode.edgeToEdge;
unawaited(SystemChrome.setEnabledSystemUIMode(mode));
}
@override
Widget build(BuildContext context) {
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) {
final (controls, details) = state;
final mode = !controls || (CurrentPlatform.isIOS && details)
? SystemUiMode.immersiveSticky
: SystemUiMode.edgeToEdge;
unawaited(SystemChrome.setEnabledSystemUIMode(mode));
_setSystemUIMode(controls, details);
});
return PopScope(