จาก session เรื่อง Flutter + Kotlin-multiplatform
ในงาน Mobile Conference Thailand 2019
เป็นเรื่องที่น่าสนใจ เนื่องจากมีทั้งข้อดีและข้อเสีย
ดังนั้นมาทำความเข้าใจกับ ปัญหาที่อาจจะต้องใช้แนวทางนี้
การทำงานของ Flutter ซึ่งพัฒนาด้วยภาษา Dart
จะพบว่า Flutter จะติดต่อไปการทำงานต่าง ๆ บน device หรือ Native นั้น
ผ่านช่องทางที่เรียกว่า Platform Channel
- Android ผ่าน MethodChannel
- iOS ผ่าน FlutterMethodChannel
แสดงดังรูป
โดยปกติแล้วนั้น Flutter ก็ทำงานได้อย่างดี
แต่ก็มีงานบางอย่างที่ Flutter ไม่สามารถใช้งานได้ (ไม่สนับสนุน)
ตัวอย่างที่เจอมาก ๆ คือ 3-party SDK
ยิ่งเป็นมือถือที่มาจากประเทศจีนยิ่งมีปัญหามาก ๆ
ส่งผลให้นักพัฒนาต้องเขียน Native code เฉพาะ platform นั้น ๆ ไปเช่น
Android จะมีปัญหามากกว่า
ดังนั้นถ้ามีปัญหาเหล่านี้แล้ว
จึงต้องการแนวทางการเขียน code เหล่านี้เพียงที่เดียวก็พอ
นั่นจึงเป็นที่มาของการนำ Kotlin Multiplatform มาใช้งาน
เป็น project ที่มีเป้าหมายเพื่อ share code ระหว่าง plateform ต่าง ๆ นั่นเอง
ปล.
ถ้าไม่มีปัญหาเหล่านี้ ก็ไม่จำเป็นต้องใช้
สามารถใช้งาน Flutter + Dart แบบปกติได้เลย
โครงสร้างของ Flutter + Kotlin Multiplatform
จะมีส่วนของ common code หรือ shared code ที่พัฒนาด้วย Kotlin
แสดงดังรูป
การ setup project ก็ไม่ง่ายนะ
แต่ก็มีอธิบายอยู่คือ
- สร้าง Flutter project แบบปกติ ($flutter create -i swift -a kotlin)
- สร้าง Kotlin multiplatform ของ Android และ iOS ขึ้นมาตามเอกสาร
ไว้มาลองสร้าง project กันดู
ฝาก link ของ GitHub จากงาน Mobile Conference Thailand
แต่เพื่อความสนุก เดี๋ยวกลับมาสร้าง project HelloWorld กันต่อไป