flutter_windowmanager
一个用于在应用程序运行时动态操作 Android WindowManager LayoutParams 的 Flutter 插件。

动机
虽然Android原生支持一系列窗口模式,但在运行中的Flutter应用程序中没有
一个好的方法来动态设置它们——
而是要求在Flutter应用程序本身的本地
MainActivity中设置这些标志。
在我们的App中,我们只想禁用特定屏幕的截图,
而不是在整个应用程序的生命周期中禁用。现在可以通过简单地调用
来实现,用于相关的屏幕。
await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);
对于相关屏幕。
这可以通过使用
RouteAware mixin,或者在有状态小部件的initState()和
dispose()方法中进行直接切换来进一步切换。
标志
完整的LayoutParams标志范围都已通过。该插件
将进行基本的API级别检查,并对任何
不受支持的标志规范抛出错误。标志使用位掩码实现,
可以单独指定,也可以OR在一起以一次性设置/清除
多个标志。
当前的标志列表是
FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
FLAG_ALT_FOCUSABLE_IM
FLAG_DIM_BEHIND
FLAG_FORCE_NOT_FULLSCREEN
FLAG_FULLSCREEN
FLAG_HARDWARE_ACCELERATED
FLAG_IGNORE_CHEEK_PRESSES
FLAG_KEEP_SCREEN_ON
FLAG_LAYOUT_INSET_DECOR
FLAG_LAYOUT_IN_SCREEN
FLAG_LAYOUT_NO_LIMITS
FLAG_NOT_FOCUSABLE
FLAG_NOT_TOUCHABLE
FLAG_NOT_TOUCH_MODAL
FLAG_SCALED
FLAG_SECURE
FLAG_SHOW_WALLPAPER
FLAG_SPLIT_TOUCH
FLAG_WATCH_OUTSIDE_TOUCH
FLAG_BLUR_BEHIND
FLAG_DISMISS_KEYGUARD
FLAG_DITHER
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
FLAG_LAYOUT_ATTACHED_IN_DECOR
FLAG_LAYOUT_IN_OVERSCAN
FLAG_LOCAL_FOCUS_MODE
FLAG_SHOW_WHEN_LOCKED
FLAG_TOUCHABLE_WHEN_WAKING
FLAG_TRANSLUCENT_NAVIGATION
FLAG_TRANSLUCENT_STATUS
FLAG_TURN_SCREEN_ON
实际上,这个插件主要是为切换
FLAG_SECURE而开发的。其他标志尚未经过测试,我们不作
任何保证,即使用任何其他标志进行切换将与Flutter良好交互——如果你
发现任何特定标志的问题,
请在[issue tracker][tracker]中告知我们。