用Flutter固定屏幕方向
- 发表于
- flutter
以下为我用Flutter固定屏幕方向,也称Flutter禁止横屏坚屏的方法。
静态方法Flutter固定屏幕方向
导包
1 |
import 'package:flutter/services.dart'; |
支持横坚屏切换
1 2 |
SystemChrome.setPreferredOrientations( [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); |
全局设置
1 2 3 4 |
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]) .then((_) { runApp(new MyApp()); }); |
很可能会出现这个错误:
1 2 3 |
E/flutter (12370): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized. E/flutter (12370): If you're running an application and need to access the binary messenger before `runApp()` has been called (for example, during plugin initialization), then you need to explicitly call the `WidgetsFlutterBinding.ensureInitialized()` first. E/flutter (12370): If you're running a test, you can call the `TestWidgetsFlutterBinding.ensureInitialized()` as the first line in your test's `main()` method to initialize the binding. |
在main()中进行异步处理时,应编写以下代码
1 |
WidgetsFlutterBinding.ensureInitialized(); |
Flutter禁止横屏
标准示例main.dart
1 2 3 4 5 6 7 |
void main() { WidgetsFlutterBinding.ensureInitialized(); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) .then((_) { runApp(new MyApp()); }); } |
需要注意的是WidgetsFlutterBinding.ensureInitialized();
,在异步情况下必须添加否则报错,静态方法中则不需要添加。
原文连接:用Flutter固定屏幕方向
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。