首页 > 解决方案 > 如何在颤动中永久修复屏幕方向?

问题描述

假设我的应用程序有两个屏幕(屏幕 A 和 B)。我的应用程序从我已将设备方向设置为纵向的屏幕 A 开始。如-

Future<void> main() async {
setUpLocator();
// debugPaintSizeEnabled=true;
WidgetsFlutterBinding.ensureInitialized();
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
MobileAds.instance.initialize();
await Firebase.initializeApp();

runApp(ChangeNotifierProvider<ThemeNotifier>(
create: (_) => ThemeNotifier(),
child: MyApp(),
));
}

通常它工作正常并且不会旋转屏幕,但问题出在屏幕 B 中,我使用了一个 youtube 播放器插件(https://pub.dev/packages/youtube_player_flutter)。当我打开 youtube 播放器的全屏模式时,它会旋转屏幕,这不是问题,但是如果我在全屏模式(youtube 播放器)下从 B 返回屏幕 A,那么屏幕 A 也会以横向模式出现。但我根本不希望屏幕 A 处于横向模式。我该如何解决这个问题?

标签: flutterscreenorientationlandscapeportrait

解决方案


您还可以在init下面设置特定屏幕,并确保它被调用,

@override
void initState(){
  super.initState();
  SystemChrome.setPreferredOrientations([
      DeviceOrientation.landscapeRight,
      DeviceOrientation.landscapeLeft,
  ]);
}

推荐阅读