mcpField
F
flutter-native

flutter-native

github.com/dhruvanbhalara开发30247 次安装8 周前更新
代码仓库

关于 flutter-native

面向 Flutter 开发的技能,介绍如何以可维护、类型安全的方式与 Android 和 iOS 原生代码交互,涵盖通道、Pigeon、代码组织和插件架构。

主要功能

  1. 01使用 MethodChannel 进行请求响应
  2. 02使用 EventChannel 传输流数据
  3. 03通过 Pigeon 实现类型安全 API
  4. 04组织平台专属代码
  5. 05构建联邦插件

适用场景

  1. 01从 Dart 调用原生 API
  2. 02传输传感器或连接状态流
  3. 03设计可复用的跨平台插件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dhruvanbhalara/skills --skill flutter-native

安装后在 Claude Code 中输入/flutter-native确认已加载。

详细介绍

原生平台互操作

开发 Flutter 应用通常需要与底层原生平台(Android/iOS)直接通信。本技能介绍可维护且类型安全的互操作标准。

1. MethodChannels(单次调用)

在 Dart 和原生平台之间使用 MethodChannel 实现标准的请求-响应模式。

Dart 标准
  • 使用唯一的域名风格通道名称。
  • 调用时始终使用 try-catch 捕获 PlatformException。
static const _channel = MethodChannel('com.example.app/device_info');

Future<String?> getDeviceOS() async {
  try {
    return await _channel.invokeMethod<String>('getOS');
  } on PlatformException catch (e) {
    AppLogger.error('Failed to get OS', error: e);
    return null;
  }
}

2. EventChannels(流)

使用 EventChannel 实现连续的数据流(例如传感器数据、连接状态)。

实现
  • 原生端必须处理 onListen 和 onCancel。
  • Dart 端必须释放订阅,以防止资源泄漏。

3. 使用 Pigeon 实现类型安全

对于复杂 API,避免手动使用基于字符串的键。使用 Pigeon 生成类型安全的接口。

4. 平台专属目录结构

尽可能将原生代码组织在相关功能目录下;也可以使用专用的 plugins/ 目录存放共享逻辑。

5. Swift Package Manager(SPM)默认设置

在 Flutter 3.44 中引入

  • 对于 iOS/macOS 原生集成,SPM 是默认的包管理器。对于新配置,它将完全取代 CocoaPods。
  • 使用 swift_packages 字段直接在插件的 pubspec.yaml 中声明 Swift 包,或通过 Xcode 工作区直接配置(参见 flutter-spm)。

6. Platform View 全面改进

在 Flutter 3.44 中引入

  • 嵌入式原生视图(如地图、网页视图、相机)采用全面改进的混合组合渲染管线,以减少掉帧并消除 UI 合成性能问题。

7. 联合插件

如果逻辑可在多个应用间复用:

  • 将实现拆分为 _platform_interface、_android、_ios 和 _web 包。
  • 为用户提供统一的入口。

评论

支持 Markdown