当前位置: 首页 > news >正文

【Flutter】Flutter 进程保活 ③ ( 屏幕常亮设置 | Flutter 禁止息屏、关闭自动锁屏、屏蔽系统屏保 )

文章目录

  • 一、Flutter 屏幕常亮需求
    • 1、业务场景
    • 2、底层核心原理
  • 二、使用 wakelock_plus 插件开发 Flutter 屏幕常亮功能
    • 1、wakelock_plus 插件介绍
    • 2、引入 wakelock_plus 依赖
    • 3、wakelock_plus 插件对应的不同平台配置
    • 4、wakelock_plus 插件基础用法代码
    • 5、wakelock_plus 插件监听单个页面的生命周期
    • 6、wakelock_plus 插件监听 APP 应用前后台变化
    • 7、wakelock_plus 插件开发注意事项
    • 章节总结
  • 三、Android 开发配置
    • 1、添加权限
    • 2、Activity 代码

参考文档 :

  • Flutter 官方文档 : https://docs.flutter.dev/install/quick
  • 使用出现网络问题 , 参考 在中国网络环境下使用 Flutter 文档 ;
  • 使用 VS Code 开发 Flutter 环境安装 :https://docs.flutter.cn/install/with-vs-code
  • VS Code 安装 :https://code.visualstudio.com/docs/setup/setup-overview





一、Flutter 屏幕常亮需求




1、业务场景


日常 Flutter 开发中 , 很多业务场景需要 APP 页面长期保持屏幕常亮 , 不自动变暗、不进入息屏、不触发系统屏保 :

  • 视频播放、直播投屏页面
  • 车载设备、工业平板控制终端
  • 扫码开票、设备巡检长驻页面
  • 实时数据监控、WebSocket设备状态大屏
  • 阅读器、文档长浏览页面

Flutter 自带没有屏幕常亮API ;

Flutter 是纯 UI 框架 ,无法直接操作系统底层电源、锁屏权限 ;

屏幕息屏 / 锁屏是安卓、iOS原生系统电源管理机制, Flutter 只能通过成熟第三方插件调用原生系统唤醒锁实现 ;


2、底层核心原理


手机/平板系统默认搭载电源省电策略 :设备无触摸操作一段时间后 ,自动降低屏幕亮度→屏幕变暗→关闭屏幕 ( 息屏 ) →启动系统屏保→设备锁屏 ,降低设备功耗 ;

  • 屏幕变暗 :系统自动降低屏幕亮度 ( 常亮可禁止 )
  • 屏幕息屏 :屏幕黑屏关闭 ( 常亮可禁止 )
  • 系统屏保 :闲置后弹出屏保画面 ( 常亮可禁止 )
  • 设备锁屏 :触发密码/指纹锁屏 ( 常亮可禁止 )
  • 后台保活 :屏幕常亮 不能 保证APP退后台不被杀进程 , 仅控制屏幕硬件状态 ;

安卓、iOS、Windows、鸿蒙全平台底层都提供 WakeLock ( 电源唤醒锁 ) 系统能力 :

  • 应用申请持有唤醒锁后 , 会向系统电源管理器发送常驻保活指令 ;
  • 系统强制终止当前APP页面的自动休眠、变暗、屏保、锁屏逻辑 , 直到代码主动释放唤醒锁 ;

使用 Flutter 屏幕常亮插件 wakelock_plus , 本质工作 :

  • Flutter层调用插件方法
  • 插件桥接调用 Android/iOS 原生系统API
  • 原生申请/释放 WakeLock 唤醒锁
  • 控制系统屏幕休眠策略




二、使用 wakelock_plus 插件开发 Flutter 屏幕常亮功能




1、wakelock_plus 插件介绍


wakelock_plus 插件 是 Flutter 社区官方维护的跨平台屏幕唤醒锁插件 , 支持 Android / iOS / MacOS / Windows / Linux / Web ; 适配 Flutter3.0+ 全部新版本 ;


2、引入 wakelock_plus 依赖


pubspec.yaml 引入依赖 :

dependencies: wakelock_plus: ^1.6.1# 截止2026最新稳定版本

终端执行拉取依赖 :

flutter pub get

3、wakelock_plus 插件对应的不同平台配置


wakelock_plus 插件对应的不同平台配置 :

  • Android :无需手动配置权限 , 插件内部自动注册
  • iOS :零配置 , 直接使用
  • 桌面/Web : 零配置 , 系统原生API直接调用

4、wakelock_plus 插件基础用法代码


wakelock_plus 插件基础用法代码 :单行代码开关屏幕常亮 ;

import'package:wakelock_plus/wakelock_plus.dart';// 1. 开启屏幕常亮 —— 禁止息屏、屏保、自动锁屏awaitWakelockPlus.enable();// 2. 关闭屏幕常亮 —— 恢复系统默认省电策略awaitWakelockPlus.disable();// 3. 查询当前是否处于常亮状态bool isKeepAlive=awaitWakelockPlus.isEnabled;

以上三行代码 , 即可实现全局屏幕不息屏!


5、wakelock_plus 插件监听单个页面的生命周期


直接调用WakelockPlus.enable()代码 , 退出应用时如果没有WakelockPlus.disable()关闭 , 则出现 :

  • 退出当前页面 , 全局手机一直常亮 , 手机无法锁屏 , 异常耗电
  • APP退到后台仍然保持唤醒 , 系统弹窗警告耗电异常
  • 页面重复开启关闭 , 状态错乱
    正确开发规范 : 跟随页面/APP生命周期自动控制常亮状态

代码示例如下 :

import'package:flutter/material.dart';import'package:wakelock_plus/wakelock_plus.dart';classMonitorPageextendsStatefulWidget{constMonitorPage({super.key});@overrideState<MonitorPage>createState()=>_MonitorPageState();}class_MonitorPageStateextendsState<MonitorPage>{@overridevoidinitState(){super.initState();// 页面初始化 : 开启屏幕常亮 , 禁止息屏屏保WakelockPlus.enable();}@overridevoiddispose(){// 核心 : 页面销毁 , 立刻关闭常亮 , 归还系统电源权限WakelockPlus.disable();super.dispose();}@overrideWidgetbuild(BuildContextcontext){returnScaffold(appBar:AppBar(title:constText('设备监控(屏幕常亮)')),body:constCenter(child:Text('当前页面永不自动息屏')),);}}

6、wakelock_plus 插件监听 APP 应用前后台变化


APP前台页面常亮 , 退后台自动关闭常亮省电 ,结合 WidgetsBindingObserver 监听应用生命周期 :

class_MonitorPageStateextendsState<MonitorPage>withWidgetsBindingObserver{@overridevoidinitState(){super.initState();WidgetsBinding.instance.addObserver(this);WakelockPlus.enable();}// 监听APP生命周期变化@overridevoiddidChangeAppLifecycleState(AppLifecycleStatestate){super.didChangeAppLifecycleState(state);switch(state){// APP前台运行 : 开启常亮caseAppLifecycleState.resumed:WakelockPlus.enable();break;// APP退后台、弹窗覆盖 : 关闭常亮省电caseAppLifecycleState.paused:caseAppLifecycleState.inactive:WakelockPlus.disable();break;default:break;}}@overridevoiddispose(){WidgetsBinding.instance.removeObserver(this);WakelockPlus.disable();super.dispose();}}

7、wakelock_plus 插件开发注意事项


wakelock_plus 插件开发注意事项 :

  • 忘记 disable 关闭唤醒锁 :
    • 只调用 enable() 不关闭 :APP退出、页面关闭后 , 手机永久无法自动息屏 ; 用户手机耗电飙升 , 应用商店审核不通过 ;
    • 解决方案 :initState 开启、dispose/onClose 强制关闭
  • 使用废弃 wakelock 原始插件 :原始 wakelock 停止维护 , Flutter3.3+编译报错、iOS平台失效 ; 全部替换为 wakelock_plus ;
  • 屏幕常亮≠后台保活 :很多开发者混淆概念 , 屏幕常亮仅仅控制屏幕硬件不黑屏 , 无法防止APP退后台被系统杀死进程 ; 后台保活需要单独配置原生后台权限 ;
  • 系统省电模式失效问题 :手机开启【超级省电/极限省电模式】时 , 系统强制剥夺APP唤醒锁权限 , 常亮功能失效 ; 属于系统级限制 , APP代码无法绕过!

章节总结

1、Flutter 无原生息屏控制API, 底层依靠系统 WakeLock 唤醒锁 实现屏幕常亮 ;
2、生产环境优先 wakelock_plus 插件, 全平台零配置、开发效率最高 ;
3、核心开发准则 : 页面进入开启、页面销毁关闭、后台自动关闭 , 杜绝耗电异常 ;
4、区分屏幕常亮进程后台保活, 避免业务需求理解偏差 ;
5、系统省电模式 会强制失效该功能, 属于正常系统限制 ;





三、Android 开发配置



本章节内容 , 仅做参考 , 如果报错时 , 考虑手动添加如下内容 ;


1、添加权限


Android平台必须添加对应系统权限 , 否则无法弹出授权弹窗 , 在 android/app/src/main/AndroidManifest.xml 中配置如下 权限 ;

<manifestxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><!-- 屏幕常亮权限 --><uses-permissionandroid:name="android.permission.WAKE_LOCK"/></manifest>

2、Activity 代码


importio.flutter.embedding.android.FlutterActivityimportio.flutter.embedding.engine.FlutterEngineimportandroid.view.WindowManagerclassMainActivity:FlutterActivity(){overridefunconfigureFlutterEngine(flutterEngine:FlutterEngine){super.configureFlutterEngine(flutterEngine)window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)}}
http://www.jsqmd.com/news/1155858/

相关文章:

  • 苏州LV香奈儿包包回收 裸包和全套附件价差对比 - 生活时报
  • Codex Windows插件真相:MCP协议与本地服务调试指南
  • OSRM高性能路由引擎:从坐标差分编码到HTTP响应的全链路压缩技术解析
  • UniversalAdbDriver终极指南:一站式解决Windows ADB驱动安装难题
  • 企业级磁盘分区实战
  • 芝柏中国官方售后服务中心|地址与24小时客服电话权威信息声明(2026年7月最新) - 亨得利官方服务中心
  • 告别演讲超时尴尬!这款PPT悬浮计时器让你精准掌控每一分钟
  • 深圳黄金回收深度实测|实地探店拆解行业套路!11区靠谱门店甄选指南 - 奢侈品回收测评
  • GESP2026年6月认证C++八级( 第一部分选择题(1-7))精讲
  • Ech0:纯前端静态博客平台的本地部署与离线内容发布
  • 怎样进行桥梁防撞预警系统的云边端架构的运行监控?
  • 线性规划 3 大求解算法对比:单纯形、两阶段、对偶单纯形法转轴元实战
  • KTV灯具实测评测:适配性与安全品控核心维度对比 - 招财兔数字员工
  • 非标定制除尘设备哪个牌子好?戈勒机电品牌适配参考 - 品牌推荐大师
  • 东莞小姐姐真实出包日记,逸程不玩到手刀套路 - 融媒生活
  • 山东云弈创峰:跨境电商多模态内容生成的“价值观对齐”与工程化防御
  • 2026 东莞发越南泰国专业物流货代哪家靠谱,全境双清运输线路全面解析 - GrowUME
  • C++串口通信实战:CSerialPort跨平台封装与工业级应用指南
  • 广州 2026 老房全屋翻新报价指南!中老年自住旧房改造靠谱装修公司深度评析 - GrowUME
  • 基于PIC32和PAM8904的智能声音警报系统设计
  • C# 枚举 Flags 特性:从权限系统到游戏状态管理的 5 个应用场景
  • 智慧教育平台电子课本批量下载终极指南:一键获取所有PDF教材
  • 吊装软件基础环境搭建与吊点配置硬核指南
  • 临沂炒鸡门店实地测评:多店风味对比,宝伟炒鸡鲜货与古法工艺优势突出 - 资讯速览
  • 2026年国内尺寸测量设备优质品牌盘点:实力可靠、技术领先的高口碑选择 - 深度智识库
  • blk-mq 调度器派发机制:从 BFQ 到 NVMe 驱动,1次跨队列派发引发的 30s 超时
  • 浏览器资源嗅探利器:猫抓扩展使用完全指南
  • 2026 东莞东城闲置包包去哪卖?选逸程无隐形消费 - 融媒生活
  • LV Carryall闲置回收,海口合扬上门验包,当场秒转账 - 开心测评
  • 2026上海黄金回收商家深度横评,7家机构优缺点剖析,帮你避开变现深坑 - 小蝶回收测评