mcpField
F
flutter-native

flutter-native

github.com/dhruvanbhalaraDevelopment30247 installsUpdated 8w ago
Repository

About flutter-native

A Flutter development skill for maintainable, type-safe communication with Android and iOS native code. It covers channels, Pigeon, platform-specific organization, and plugin architecture.

Key features

  1. 01Request-response calls with MethodChannel
  2. 02Streaming with EventChannel
  3. 03Type-safe APIs with Pigeon
  4. 04Platform-specific code organization
  5. 05Federated plugin structure

Use cases

  1. 01Calling native APIs from Dart
  2. 02Streaming sensor or connectivity data
  3. 03Designing reusable cross-platform plugins

Install

Copy the command and run it in a terminal.

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

After installing, type/flutter-nativein Claude Code to confirm it loaded.

Details

From the project README

Native Platform Interoperability

Developing Flutter apps often requires direct communication with the underlying native platform (Android/iOS). This skill covers the standards for maintainable and type-safe interoperability.

1. MethodChannels (One-shot)

Use MethodChannel for standard request-response patterns between Dart and Native.

Dart Standard
  • Use a unique domain-style channel name.
  • ALWAYS wrap calls in a try-catch for 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 (Streams)

Use EventChannel for continuous data flow (e.g., sensor data, connectivity).

Implementation
  • Native side MUST handle onListen and onCancel.
  • Dart side MUST dispose the subscription to prevent leaks.

3. Type Safety with Pigeon

For complex APIs, avoid manual string-based keys. Use Pigeon to generate type-safe interfaces.

4. Platform-Specific Directory Structure

Organize native code within the relevant feature if possible, or use a dedicated plugins/ directory for shared logic.

5. Swift Package Manager (SPM) Defaults

Introduced in Flutter 3.44

  • For iOS/macOS native integrations, SPM is the default package manager. It replaces CocoaPods entirely for new configurations.
  • Declare Swift Packages directly in your plugin's pubspec.yaml using the swift_packages field, or configure them directly via Xcode workspaces (see flutter-spm).

6. Platform View Overhaul

Introduced in Flutter 3.44

  • Embedded native views (such as maps, web views, cameras) use an overhauled hybrid composition rendering pipeline to minimize dropped frames and eliminate UI compositing performance issues.

7. Federated Plugins

If the logic is reusable across multiple apps:

  • Split implementation into _platform_interface, _android, _ios, and _web packages.
  • Provide a single entry point for users.

Comments

Markdown supported