Communityコーディング&開発github.com

flutter/flutter-plugins

他のFlutterアプリが使用できるネイティブ相互運用を提供するFlutterプラグインを構築します

flutter-plugins とは?

このスキルは、Flutterアプリ向けにプラットフォーム固有の機能(カメラ、センサー、ファイルアクセスなど)を公開するFlutterプラグインを開発するためのものです。プラグインはDart APIを介してネイティブコード(AndroidのKotlin/Java、iOSのSwift/Objective-C)と通信し、Flutterとネイティブプラットフォーム間のシームレスな相互運用を実現します。AndroidではMethodChannelやEventChannel、iOSではFlutterMethodChannelなどのメカニズムを使用して、Dartからネイティブメソッドを呼び出したり、ネイティブからDartにデータをストリーミングしたりできます。このスキルは、pub.devで公開するための標準的なプラグイン構造、テスト方法、およびドキュメント作成のベストプラクティスを提供し、開発者が高品質で再利用可能なプラグインを作成できるように支援します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/flutter/skills/tree/main/skills/flutter-plugins

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

flutter-plugins は何をしますか?

他のFlutterアプリが使用できるネイティブ相互運用を提供するFlutterプラグインを構築します。

概要

このスキルは、Flutterアプリ向けにプラットフォーム固有の機能を公開するFlutterプラグインを開発するためのガイドです。プラグインはDart APIを介してネイティブコード(AndroidのKotlin/Java、iOSのSwift/Objective-C)と通信し、Flutterとネイティブプラットフォーム間のシームレスな相互運用を実現します。

動作原理

Flutterプラグインは以下のメカニズムを使用してネイティブコードとの通信を行います:

  • MethodChannel: Dartからネイティブメソッドを呼び出すための非同期メッセージパッシング。
  • EventChannel: ネイティブからDartへの連続データストリーミング。
  • BasicMessageChannel: カスタムエンコードを使用した双方向メッセージパッシング。

プラグインの構造

標準的なFlutterプラグインの構造は以下の通りです:

my_plugin/
├── lib/
│   └── my_plugin.dart          # 公開Dart API
├── android/
│   └── src/main/kotlin/...     # Androidネイティブ実装
├── ios/
│   └── Classes/...             # iOSネイティブ実装
├── example/
│   └── lib/main.dart           # 使用例
├── test/
│   └── my_plugin_test.dart     # 単体テスト
└── pubspec.yaml

始め方

  1. 新しいプラグインプロジェクトを作成します:

    flutter create --template plugin my_plugin
    
  2. lib/my_plugin.dartでDart APIを定義します。

  3. Androidではandroid/src/main/kotlin/...でネイティブ実装を行います。

  4. iOSではios/Classes/...でネイティブ実装を行います。

  5. プラグインをテストし、pub.devに公開します。

ベストプラクティス

  • プラットフォーム固有のコードは最小限に保ち、可能な限り共通ロジックをDartで実装します。
  • エラーハンドリングは両方のプラットフォームで一貫させます。
  • プラグインの使用例を示すサンプルアプリを提供します。
  • 十分なドキュメントとAPIリファレンスを追加します。
  • 単体テストと統合テストを作成します。

関連リソース

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

flutter/flutter-accessibility

Configure your Flutter app to support assistive technologies like Screen Readers

flutter/flutter-accessibility-audit

Triggers an accessibility scan through the widget_inspector and automatically adds Semantics widgets or missing labels to the source code.

flutter/flutter-adding-home-screen-widgets

Adds home screen widgets to a Flutter app for Android and iOS. Use when providing glanceable app information or quick actions on the device home screen.

flutter/flutter-add-integration-test

Configures Flutter Driver for app interaction and converts MCP actions into permanent integration tests. Use when adding integration testing to a project, exploring UI components via MCP, or automating user flows with the integration_test package.

flutter/flutter-add-widget-preview

Adds interactive widget previews to the project using the previews.dart system. Use when creating new UI components or updating existing screens to ensure consistent design and interactive testing.

flutter/flutter-add-widget-test

Implement a component-level test using `WidgetTester` to verify UI rendering and user interactions (tapping, scrolling, entering text). Use when validating that a specific widget displays correct data and responds to events as expected.

flutter/flutter-animating-apps

Implements animated effects, transitions, and motion in a Flutter app. Use when adding visual feedback, shared element transitions, or physics-based animations.

flutter/flutter-animation

Add animated effects to your Flutter app

flutter/flutter-apply-architecture-best-practices

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-app-size

Measure and reduce the size of the Flutter app bundle, APK, or IPA

flutter/flutter-architecting-apps

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-architecture

Use the Flutter team's recommended app architecture

flutter/flutter-building-forms

Builds Flutter forms with validation and user input handling. Use when creating login screens, data entry forms, or any multi-field user input.

flutter/flutter-building-layouts

Builds Flutter layouts using the constraint system and layout widgets. Use when creating or refining the UI structure of a Flutter application.

flutter/flutter-building-plugins

Builds Flutter plugins that provide native interop for other apps to use. Use when creating reusable packages that bridge Flutter with platform-specific functionality.

flutter/flutter-build-responsive-layout

Use `LayoutBuilder`, `MediaQuery`, or `Expanded/Flexible` to create a layout that adapts to different screen sizes. Use when you need the UI to look good on both mobile and tablet/desktop form factors.

flutter/flutter-caching

Cache data in a Flutter app

flutter/flutter-caching-data

Implements caching strategies for Flutter apps to improve performance and offline support. Use when retaining app data locally to reduce network requests or speed up startup.

flutter/flutter-concurrency

Execute long-running tasks in a background thread in Flutter

flutter/flutter-databases

Work with databases in a Flutter app

関連スキル