我正在为 Flutter 编写一个平台视图支持的插件,它在渲染期间使用 OpenGL。当方向改变时,我需要更新 EGL 上下文以引用实际的窗口支持的渲染上下文。
但是如何检测方向变化(例如在PlatformView
子类型中)?
在附加到实例之后,实现Application.ActivityLifecycleCallbacks
的方法似乎根本没有被调用。Application
我正在为 Flutter 编写一个平台视图支持的插件,它在渲染期间使用 OpenGL。当方向改变时,我需要更新 EGL 上下文以引用实际的窗口支持的渲染上下文。
但是如何检测方向变化(例如在PlatformView
子类型中)?
在附加到实例之后,实现Application.ActivityLifecycleCallbacks
的方法似乎根本没有被调用。Application
您没有通过活动生命周期回调获得方向更改的回调的原因是,在您的清单文件中,您可以看到
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