Pro Yearly is on sale from $80 to $50! »

Flutter (Dart) と Platform (Android/iOS) - 相互呼び出しのMethodChannelについて -

2ddbd112dbc8c6572fe79821584c1465?s=47 Kurun
February 12, 2020

Flutter (Dart) と Platform (Android/iOS) - 相互呼び出しのMethodChannelについて -

2ddbd112dbc8c6572fe79821584c1465?s=128

Kurun

February 12, 2020
Tweet

Transcript

  1. Flutter (Dart) と Platform (Android/iOS) - 相互呼び出しのMethodChannelについて - @kurun_pan

  2. @kurun_pan @Kurun-pan Software Engineer @Sony Linux / Android / Flutter

    /スプラトゥーン を愛するエンジニア Kurun / くるん About me
  3. PR n 技術書典8 2日目の3/1(日)、良かったら遊びに来てください!

  4. n UI Framework (Google OSS) n UIやアニメーションなど簡単に作成可能 n クロスプラットフォーム n

    開発言語はDart (宣言型プログラミング) n ホットリロード機能 n 独自レンダラ&GPUで高速描画 Flutter Overview
  5. n iOS/Android ü Officialサポート (2018/12〜) n Web ü ベータ版 (2019/12〜)

    Ø 開発者が一定のレベルで使える品質 n macOS ü アルファ版 (2019/12〜) n Linux/Windows ü プレビュー版 (2018/12〜) Flutter Support Platforms 1SJPSJUZ High Low ࡢ೥্֨͛ʂ ࡢ೥্֨͛ʂ
  6. Between Flutter and Platform nUIからプラットフォーム側の機能が利用したい nプラットフォーム側からUIにイベント通知したい 1MBUGPSN TQFDJGJD ϓϥοτϑΥʔػೳΛ࢖͏ 6*දࣔมԽʹؔΘΔ

    Πϕϯτͷ௨஌ 'MVUUFS "QQ %BSU ຊ೔ͷ಺༰
  7. n Audio/Videoなどのメディア再生/エンコードなど n Permissions関連 n Hardware関連 (例. Bluetooth) n View関連

    (例. WebView) n ストレージ/ファイルのアクセス etc . Platform-Specific Functions
  8. Platform Channels (Dart ⇆ Native I/F) 'SBNFXPSL %BSU $VQFSUJPO .BUFSJBM

    8JEHFUT 3FOEFSJOH "OJNBUJPO 1BJOUJOH (FTUVSFT 'PVOEBUJPO &OHJOF $$ 4FSWJDF1SPUPDPM $PNQPTJUJPO 1MBUGPSN$IBOOFMT %BSU*TPMBUF4FUVQ %BSU7. .BOBHFNFOU 3FOEFSJOH 4ZTUFN&WFOUT 'SBNF4DIFEVMJOH "TTFU3FTPMVUJPO 'SBNF1JQFMJOJOH 5FYU-BZPVU &NCFEEFS 3FOEFS4VSGBDF4FUVQ /BUJWF1MVHJOT 1BDLBHJOH 5ISFBE4FUVQ &WFOU-PPQ*OUFSPQ 1MBUGPSN SEQBSUZ 044 %BSU7. 4LJB WVMLBO 'MVUUFS"QQ %BSU 7TZOD8BJUFS BOHMF ʜ n 相互参照には以下のAPIを利用 ü SystemChannels ü MethodChannel ← 本日の内容 ü EventChannel ü MessageChannel n プラグイン開発時に必須 ü Flutter公式ライブラリや各種プラグイ ンライブラリも上記を利用 n 非同期API ü 内部的には、Flutter Engineの Platform Channels機能で実現 Ø メッセージパッシング
  9. n 詳細はQiitaの記事にもまとめました ü https://qiita.com/kurun_pan/items/db6c8fa94bbfb5c0c8d7 Qiita “Flutter MethodChannel APIの使い方”

  10. Flutter (Dart) → Android (Kotlin) 'MVUUFS 'SBNFXPSL %BSU 'MVUUFS &OHJOF

    $ 1MBUGPSN TQFDJGJD .FUIPE$IBOOFM JOWPLF.FUIPE 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE .FUIPE$IBOOFM TFU.FUIPE$BMM)BOEMFS 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE ˞1MBUGPSN ݴޠ ຖʹ "1*໊͕एׯҟͳΔͨΊ஫ҙ )BOEMF.FUIPE$BMM 'MVUUFS "QQ %BSU ݺͼग़͠
  11. Flutter (Dart) → Android (Kotlin) 'MVUUFS 'SBNFXPSL %BSU 'MVUUFS &OHJOF

    $ 1MBUGPSN TQFDJGJD .FUIPE$IBOOFM JOWPLF.FUIPE 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE 'MVUUFS "QQ %BSU ௨৴༻ͷνϟϯωϧੜ੒ .FUIPE$IBOOFM TFU.FUIPE$BMM)BOEMFS )BOEMF.FUIPE$BMM 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE %BSUίʔυ ,PUMJOͷίʔυΛඇಉظݺͼग़͠ ୈҾ਺ϓϥοτϑΥʔϜଆͷϝιου໊Λಛఆग़དྷΔจࣈྻ ୈҾ਺౉͍ͨ͠σʔλ ౉ͤΔܕ͸࢓্੍༷໿͋Γ 4UBOEBSE.FTTBHF$PEFDΫϥεࢀর ,PUMJOଆ͔ΒϦλʔϯ஋΋ड͚औΓՄೳ 3FTVMU͕TVDDFTT࣌ͷΈ
  12. Flutter (Dart) → Android (Kotlin) 'MVUUFS 'SBNFXPSL %BSU 'MVUUFS &OHJOF

    $ 1MBUGPSN TQFDJpD 4VDDFTTͷҾ਺Ͱ஋ΛϦλʔϯՄೳ ˞SFTVMUΛϩʔΧϧʹอଘͯ͠ޙ͔Βݺͼग़ ͢৔߹ɺඞͣ6*εϨου͔Βίʔϧ͢Δ͜ͱ Ҿ਺͸ NFUIPE$BMMBSHVNFOU ͔ΒऔಘՄೳ .FUIPE$IBOOFM TFU.FUIPE$BMM)BOEMFS 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE )BOEMF.FUIPE$BMM 'MVUUFS "QQ %BSU .FUIPE$IBOOFM JOWPLF.FUIPE 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE ,PUMJOίʔυ ௨৴༻ͷνϟϯωϧੜ੒
  13. さらに、

  14. Android (Kotlin) → Flutter (Dart) 'MVUUFS 'SBNFXPSL %BSU 'MVUUFS &OHJOF

    $ 1MBUGPSN TQFDJpD .FUIPE$IBOOFM JOWPLF.FUIPE .FUIPE$IBOOFM TFU.FUIPE$BMM)BOEMFS )BOEMF.FUIPE$BMM Kotlin → Dartも呼び出しも出来ます! 'MVUUFS "QQ %BSU 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE ˞1MBUGPSN ݴޠ ຖʹ "1*໊͕एׯҟͳΔͨΊ஫ҙ ݺͼग़͠
  15. Android (Kotlin) → Flutter (Dart) 'MVUUFS 'SBNFXPSL %BSU 'MVUUFS &OHJOF

    $ 1MBUGPSN TQFDJGJD .FUIPE$IBOOFM JOWPLF.FUIPE .FUIPE$IBOOFM TFU.FUIPE$BMM)BOEMFS )BOEMF.FUIPE$BMM 'MVUUFS "QQ %BSU 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE 'VUVSFWBMVFͰTVDDFTTΛϦλʔϯ σʔλ΋Ҿ਺Ͱ౉͢ࣄ͕Մೳ Τϥʔͷ৔߹͸'VUVSFFSSPS /PU*NQMFNFOUFE͸ෆ໌ʜ %BSUίʔυ ίʔϧόοΫઃఆ
  16. Android (Kotlin) → Flutter (Dart) 'MVUUFS 'SBNFXPSL %BSU 'MVUUFS &OHJOF

    $ 1MBUGPSN TQFDJGJD .FUIPE$IBOOFM JOWPLF.FUIPE .FUIPE$IBOOFM TFU.FUIPE$BMM)BOEMFS )BOEMF.FUIPE$BMM 'MVUUFS "QQ %BSU 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE 3FTVMU TVDDFTTFSSPSOPU*NQMFNFOUFE JOWPLF.FUIPEͰ%BSUଆΛίʔϧ ,PUMJOίʔυ
  17. Thank you!☺