Я хочу показать одну страницу в приложении Flutter в альбомной ориентации.Любой другой экран должен отображаться в портретном режиме.
Я нашел этот фрагмент кода:
В моем main.dart
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]).then((_) {
runApp(new IHGApp());
});
Это запускает приложение в портретном режиме.Итак, у меня есть экран, который я хочу показать в ландшафтном режиме, и вот код, который я там использовал:
@override
void initState() {
super.initState();
SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeRight,
DeviceOrientation.landscapeLeft,
]);
}
@override
void dispose() {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
super.dispose();
}
Это работает на Android.
В iOS, похоже, нет способаПринудительно использовать ландшафтный режим для одной страницы.
https://github.com/flutter/flutter/issues/13238
В этой статье я нашел проблему для этой проблемы.Сродди упомянул, как решить проблему.
"Я обошел проблему, создав небольшой канал платформы, который вызывает этот код для переключения в портретный режим непосредственно перед вызовом setPreferredOrientations:"
[[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortrait) forKey:@"orientation"];
И аналогичный код для переключения в ландшафт
[[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeLeft) forKey:@"orientation"];
Как я могу реализовать это в моем приложении?