ブログ一覧に戻る

Developing Flutter Plugins

西山 勇毅
Flutter Dart Swift Kotlin Plugin

Flutter

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に実装する。

参考資料

この記事をシェア