Developing Flutter Plugins
西山 勇毅
Flutter
Dart
Swift
Kotlin
Plugin

AWARE用のFlutterのプラグインを開発する機会があったのでメモ。Flutterの開発環境が整った状態を想定して記述する。また、この記事の執筆時点では、Flutterバージョンは0.9.7-pre.26、Dartは2.1.0を用いて、macOS10.14上のAndroid StudioとXcodeで開発。
Flutterプラグインのテンプレート作成¶
以下のコマンドでFlutterプラグインのテンプレートを作成する。
flutter create --org com.aware.flutter.sensor.sample --template=plugin -i swift -a kotlin aware_sensor_sample
生成されるファイル構成:
- CHANGELOG.md
[アプリ名]/lib- Dartフロントエンド[アプリ名]/ios- iOSバックエンド[アプリ名]/android- Androidバックエンド[アプリ名]/example- サンプルアプリ.imlファイル- LICENSE, pubspec.yaml, README.md
Method & Event チャンネル作成¶
Flutterプラグインでは、MethodChannelを使ってメソッド呼び出しを、EventChannelを使ってイベントストリームをフロントエンド(Dart)とバックエンド(iOS/Android)間でやり取りする。
MethodChannelの実装例¶
MethodChannelはDartフロントエンドからプラットフォーム固有のメソッドを呼び出すために使用する。プラットフォームバージョンの取得やセンサの有効化などのメソッド呼び出しに使う。
EventChannelの実装例¶
フロントエンド側がonChangedメソッドを実装することで、イベント発生時にonChangedメソッドが呼び出される。
iOSバックエンドの実装¶
iOSバックエンドでは、FlutterStreamHandlerを実装し、チャンネルを登録する。handle(call:result:)でメソッド呼び出しを処理し、onListen/onCancelでイベントストリームを管理する。
依存ライブラリは.podspecファイルで管理する。
サンプルアプリの実装¶
サンプルアプリは[アプリ名]/example/lib/main.dartに実装する。