本插件专为支持收银应用等双屏交互场景设计,适用于主屏(操作屏)+ 副屏(客显屏)的搭配模式。
核心优势:支持双屏安卓设备,主副屏均采用 Flutter 开发,提供简洁易用的 API 实现双屏间的高效通信交互。
新方案通过统一技术栈(主副屏均使用 Flutter),大幅降低开发及后期维护成本;创新的双引擎通信机制,确保主副屏之间交互的高效性与稳定性。
在项目的 pubspec.yaml 文件中添加以下依赖配置:
dependencies:
flutter:
sdk: flutter
flutter_subscreen_plugin: ^1.0.8通过本插件,可快速完成主副屏的 UI 绘制及交互通信功能开发,具体步骤如下:
在应用入口处,根据路由名称区分主副屏,分别加载对应的 UI 页面:
void main() {
var defaultRouteName = window.defaultRouteName;
if ("subMain" == defaultRouteName) {
viceScreenMain(); // 加载副屏 UI
} else {
defaultMain(); // 加载主屏 UI
}
}
// 主屏 UI 入口
void defaultMain() {
runApp(MainApp());
}
// 副屏 UI 入口
void viceScreenMain() {
runApp(SubApp());
}调用 sendMsgToViceScreen 方法,可向副屏发送数据,支持携带参数:
SubScreenPlugin.sendMsgToViceScreen("data", params: {"params": "123"});通过监听viceStream 流,可实时接收主屏发送的数据:
SubScreenPlugin.viceStream.listen((event) {
print(event.arguments.toString()); // 打印接收的主屏数据
});调用 isMultipleScreen 方法,获取当前设备是否支持双屏的结果:
SubScreenPlugin.isMultipleScreen((result) {
print("是否支持双屏:$result");
});调用 checkOverlayPermission 方法,判断应用是否具备 overlay 窗口权限(副屏显示需依赖此权限):
SubScreenPlugin.checkOverlayPermission((result) {
print("是否支持 overlay:$result");
});若应用未获取 overlay 窗口权限,可调用 requestOverlayPermission 方法申请,获取权限后可将副屏设置为持久窗口:
SubScreenPlugin.requestOverlayPermission();通过以下方法可手动控制副屏的显示与隐藏:
SubScreenPlugin.doubleScreenShow(); // 开启副屏
SubScreenPlugin.doubleScreenCancel(); // 关闭副屏若需在应用初始化完成后直接显示副屏,可在 Android 原生配置文件中添加如下配置:
路径:android -> values -> attrs.xml
<!-- 是否在初始化时自动显示副屏 -->
<bool name="autoShowSubScreenWhenInit">true</bool>若副屏需使用三方 Flutter 插件(如相机、地图等),需在 Android 原生的 MainActivity 的 onCreate 方法中进行插件注册,示例如下:
// 在 onCreate 方法的 super 调用后添加
FlutterSubscreenPlugin.registerThirdPlugins(
arrayListOf(
io.flutter.plugins.camera.CameraPlugin(), // 需注册的三方插件
),
this.flutterEngine!!.plugins
)插件的核心调用流程及组件关系如下:
完成上述配置后,即可实现基础的双屏交互功能,以下是实体设备上的运行效果:
主屏效果:点击查看
副屏初始效果:点击查看
副屏接收主屏数据效果:点击查看
-
完整的使用示例代码,可参考插件包中的
example目录。 -
如需了解插件实现原理,可查看详细文档:点击查看原理文档


