Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Flutter (Dart) と Platform (Android/iOS) - 相互呼び出しのMethodChannelについて -
Kurun
February 12, 2020
Programming
1
1.1k
Flutter (Dart) と Platform (Android/iOS) - 相互呼び出しのMethodChannelについて -
Kurun
February 12, 2020
Tweet
Share
More Decks by Kurun
See All by Kurun
kurunpan
1
1.2k
kurunpan
0
500
kurunpan
4
1.1k
kurunpan
0
510
kurunpan
2
1.3k
kurunpan
4
520
kurunpan
3
520
kurunpan
4
1.2k
Other Decks in Programming
See All in Programming
watilde
5
1.5k
takapy
0
190
mihyaeru21
0
370
antonshilov
1
130
manfredsteyer
PRO
0
160
texmeijin
0
140
rince
3
250
ybrliiu
0
100
rarous
0
170
nearmugi
0
190
manfredsteyer
PRO
0
160
korosuke613
2
260
Featured
See All Featured
caitiem20
308
17k
keathley
20
710
jmmastey
10
630
zakiwarfel
88
3.4k
phodgson
87
3.9k
wjessup
339
16k
bryan
100
11k
davidbonilla
70
3.6k
aarron
257
36k
zenorocha
296
40k
bkeepers
408
58k
mojombo
359
62k
Transcript
Flutter (Dart) と Platform (Android/iOS) - 相互呼び出しのMethodChannelについて - @kurun_pan
@kurun_pan @Kurun-pan Software Engineer @Sony Linux / Android / Flutter
/スプラトゥーン を愛するエンジニア Kurun / くるん About me
PR n 技術書典8 2日目の3/1(日)、良かったら遊びに来てください!
n UI Framework (Google OSS) n UIやアニメーションなど簡単に作成可能 n クロスプラットフォーム n
開発言語はDart (宣言型プログラミング) n ホットリロード機能 n 独自レンダラ&GPUで高速描画 Flutter Overview
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 ࡢ্֨͛ʂ ࡢ্֨͛ʂ
Between Flutter and Platform nUIからプラットフォーム側の機能が利用したい nプラットフォーム側からUIにイベント通知したい 1MBUGPSN TQFDJGJD ϓϥοτϑΥʔػೳΛ͏ 6*දࣔมԽʹؔΘΔ
Πϕϯτͷ௨ 'MVUUFS "QQ %BSU ຊͷ༰
n Audio/Videoなどのメディア再生/エンコードなど n Permissions関連 n Hardware関連 (例. Bluetooth) n View関連
(例. WebView) n ストレージ/ファイルのアクセス etc . Platform-Specific Functions
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機能で実現 Ø メッセージパッシング
n 詳細はQiitaの記事にもまとめました ü https://qiita.com/kurun_pan/items/db6c8fa94bbfb5c0c8d7 Qiita “Flutter MethodChannel APIの使い方”
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 ݺͼग़͠
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࣌ͷΈ
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ίʔυ ௨৴༻ͷνϟϯωϧੜ
さらに、
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*໊͕एׯҟͳΔͨΊҙ ݺͼग़͠
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ίʔυ ίʔϧόοΫઃఆ
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ίʔυ
Thank you!☺