1

我正在为 Flutter 编写一个平台视图支持的插件,它在渲染期间使用 OpenGL。当方向改变时,我需要更新 EGL 上下文以引用实际的窗口支持的渲染上下文。

但是如何检测方向变化(例如在PlatformView子类型中)?

在附加到实例之后,实现Application.ActivityLifecycleCallbacks的方法似乎根本没有被调用。Application

4

1 回答 1

3

您没有通过活动生命周期回调获得方向更改的回调的原因是,在您的清单文件中,您可以看到

android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"

这可以防止您的活动在本机 Android 生命周期的方向更改时重新创建。你应该做的是,使用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,
    );
  },
);

有关更多信息,请查看https://flutter.dev/docs/cookbook/design/orientation

于 2019-08-13T10:54:51.687 回答