浮动

Flutter画中画管理。仅限Android

Picture in picture demo

应用配置

android/src/main/AndroidManifest.xml<activity>标签中添加android:supportsPictureInPicture="true"

<manifest>
   <application>
        <activity
            android:name=".MainActivity"
            android:supportsPictureInPicture="true"
            ...

Widget

此包提供了一个辅助的PiPSwitcher小部件,用于根据当前的PiP状态切换显示的小部件。使用方法如下

PiPSwitcher(
    childWhenDisabled: Scaffold(...),
    childWhenEnabled: JustVideo(), 
)

API

期望模式下的PiP模式仅在Android上可用,因此在平台添加此类功能的原生支持之前,不计划支持iOS和Web。

创建一个浮动实例

final floating = Floating();

完成PiP功能后,请确保处置该实例

floating.dispose();

检查PiP是否可用

final canUsePiP = await floating.isPipAvailable;

PiP可能因为管理员或设备制造商管理的系统设置而不可用。此外,该设备可能运行的是未包含此功能的Android版本。

检查应用程序是否处于PiP模式

final currentStatus = await floating.pipStatus;

可能的状态

状态 描述 enable()会有效果吗?
disabled PiP可用但当前已禁用。
enabled PiP已启用。应用程序可以显示内容,但在用户决定将应用程序恢复到全屏大小之前,将不会接收用户输入。
不可用 给定设备上已禁用PiP。

启用PiP模式

final statusAfterEnabling = await floating.enable();

默认的16/9宽高比可以用自定义的Rational覆盖。例如,要使PiP成为方形,请使用:.enable(Rational(1, 1)).enable(Rational.square())

启用后,用户可以通过系统UI切换关闭PiP模式。

GitHub

查看 Github