CatHand Blog

アプリ開発やMac弄り

flutterとmacOSネイティブアプリでやり取りする

ネイティブアプリの一部をflutter化したとき、ネイティブコードとflutter間でやり取りするには FlutterMethodChannel を使います。

api.flutter.dev

ネイティブ側とflutter側でお互いに FlutterMethodChannel を作ってやり取りする形になります。

iOSでは [FlutterMethodChannel +methodChannelWithName:binaryMessenger:]binaryMessenger に該当の FlutterViewController を渡せば良いようなのですが、macOSの FlutterViewController は FlutterBinaryMessenger プロトコルが実装されていないので指定できません。

ソースを辿ったところ、 FlutterEngine の方に実装されているようなので、 flutterViewController.engine as! FlutterBinaryMessenger のように渡すことができます。

github.com