flutter- 如何知道设备是 DeviceOrientation 是向上还是向下?

sat*_*ish 7 dart flutter

当我旋转屏幕时,它的相机会随着屏幕旋转,所以我得到了倒置的相机屏幕。

return new AspectRatio(
    aspectRatio: controller.value.aspectRatio,
    child: new CameraPreview(controller),
  );
Run Code Online (Sandbox Code Playgroud)

rif*_*nja 11

您可以使用 OrientationBuilder 构建响应式应用程序

OrientationBuilder(
  builder: (context, orientation) {
    return GridView.count(
      // Create a grid with 2 columns in portrait mode, or 3 columns in landscape mode.
      crossAxisCount: orientation == Orientation.portrait ? 2 : 3,
    );
  },
);
Run Code Online (Sandbox Code Playgroud)

或者

Orientation currentOrientation = MediaQuery.of(context).orientation;
if(currentOrientation == Orientation.portrait){
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

要强制执行特定方向,请参阅此/sf/answers/3522552911/

其他有用的链接:

https://flutter.io/cookbook/design/orientation/

https://docs.flutter.io/flutter/services/DeviceOrientation-class.html

https://medium.com/@kr1uz/how-to-restrict-device-orientation-in-flutter-65431cd35113

更新

Flutter 目前不支持“方向侧”,但此插件可能在该领域有所帮助 https://pub.dartlang.org/packages/native_device_orientation

  • 还有`MediaQuery.of(context).orientation` (3认同)
  • 我认为您错过了实际问题,因为`OrientationBuilder` 没有告诉您 potrait 是“向上”还是“向下”。 (2认同)