Flutter应用添加竖屏锁定代码后,三星手机仍无法保持PortraitUp
解决三星手机Flutter竖屏锁定失效问题
首先看你代码里的关键错误:WidgetsFlutterBinding.ensureInitialized 少了调用括号,正确写法是WidgetsFlutterBinding.ensureInitialized();,这会导致Flutter引擎初始化不完整,竖屏设置可能无法正常生效。
修正后的基础代码
void main() async { WidgetsFlutterBinding.ensureInitialized(); await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); runApp(const MyApp()); }
这里添加了async和await,确保竖屏方向设置完成后再启动应用,避免异步执行顺序问题导致的设置失效。
适配三星手机的额外步骤
- 配置AndroidManifest.xml:在
<activity>标签内新增android:screenOrientation="portrait",强制Activity固定竖屏,示例代码如下:<activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize" android:screenOrientation="portrait"> <!-- 新增该行 --> </activity> - 检查三星系统设置:部分三星机型自带“智能旋转”“自适应旋转”功能,需引导用户手动关闭该功能,否则系统会强制覆盖应用的竖屏设置。
- 页面内重复设置:如果全局设置仍不生效,在主页面的
initState中再次执行竖屏锁定,确保页面加载时生效:@override void initState() { super.initState(); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); }
内容的提问来源于stack exchange,提问作者Abdullah
相关产品推荐
相关产品推荐

