You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何实现iOS 16锁屏小组件?是否有适配插件?

适配iOS 16锁屏小组件的Flutter方案

可用适配插件

目前已有不少Flutter插件更新支持iOS 16锁屏小组件,比如你提到的home_widget,其后续版本(高于0.1.6)已经添加了锁屏小组件的适配支持;另外flutter_app_builder这类插件也能实现锁屏小组件的开发需求。

具体实现步骤

iOS原生端配置

  • 打开Flutter项目的iOS模块(用Xcode),新建一个Widget Extension目标,按需勾选「Include Configuration Intent」(用于小组件的动态配置)。
  • 在Extension的Info.plist里,找到NSExtension下的NSExtensionAttributes,添加widgetFamily数组,包含accessoryCircular(圆形锁屏组件)、accessoryRectangular(矩形锁屏组件)、accessoryInline(行内锁屏组件)这几个值,声明支持的锁屏组件尺寸。
  • 配置App Group:在Xcode的项目设置中,给主App和Widget Extension都添加同一个App Group ID,用来实现Flutter和小组件之间的数据共享。
  • 编写小组件的原生代码(Swift/OC),通过App Group读取Flutter侧传递的数据,完成锁屏小组件的UI渲染。

Flutter侧代码实现

  • 引入适配后的插件(比如更新home_widget到最新版本),在项目中配置好对应的App Group ID。
  • 使用插件API向小组件传递数据,示例代码:
    await HomeWidget.saveWidgetData<String>(key: 'lockscreen_content', value: '今日待办:3项');
    
  • 触发锁屏小组件刷新:
    await HomeWidget.updateWidget(name: 'LockScreenWidget');
    

关键注意点

  • 锁屏小组件的布局受iOS系统限制,只能使用苹果提供的固定尺寸模板,无法自定义任意布局样式。
  • Flutter和锁屏小组件之间的数据交互必须通过App Group完成,不能直接共享内存数据。
  • 测试时务必使用iOS 16及以上版本的真机,部分模拟器可能存在锁屏小组件的渲染或数据同步问题。

内容的提问来源于stack exchange,提问作者Anandh Krishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:20:29