PETEPITTAWAT.DEV

Flutter: อนาคตของ Flutter กับ iOS 14

Cover Image for Flutter: อนาคตของ Flutter กับ iOS 14
Pittawat Taveekitworachai
Pittawat Taveekitworachai

ประมาณ 1 เดือนก่อนหน้า Apple ได้จัดงาน WWDC2020 ซึ่งได้มีการเปิดตัวระบบปฏิบัติการเวอร์ชันใหม่ ๆ สำหรับผลิตภัณฑ์ต่าง ๆ โดยได้มีการปล่อยเวอร์ชัน Beta ออกมา เพื่อให้นักพัฒนาได้นำไปทดสอบว่า iOS 14 จะไม่มีปัญหากับแอปพลิเคชันในปัจจุบัน โดยในสังคมของนักพัฒนา Flutter เองก็ได้มีหลายสิ่งที่น่าสนใจเกิดขึ้นกับ iOS 14 ที่กำลังมาถึง จะมีอะไรบ้างนั้น ไปติดตามกันได้เลย


Crash!

ปัญหาหนึ่งเลยที่หลาย ๆ คนพบจากการใช้แอปพิลเคชันที่ Build จาก Flutter รันบน iOS 14 คือ Crash โดยปัญหานี้นั้นจะพบเฉพาะเมื่อทำการ Build แอปพิลเคชันเป็น Release Mode เท่านั้น (ไม่พบใน Development/Debug Mode)

โดยปัญหานี้นั้นส่วนหนึ่งมาจาก Xcode 12 มีพฤติกรรมที่เปลี่ยนไป (มีคนทดลองโดยการนำ iOS 14 SDK ก็อปไปวางแล้วใช้กับ Xcode 11.5 ก็ปกติดี) ซึ่งล่าสุดนั้นได้มีความคืบหน้าไปมากแล้ว

หากเราได้ดูที่ Issues ที่เกี่ยวข้องกับ Xcode 12 จะพบว่าปัจจุบัน (27/7/2020) นั้นเหลือเพียงปัญหาที่ไม่ได้ร้ายแรงอะไรเท่านั้น (Warning และเรื่องของการเพิ่ม Lowest iOS Support เป็น 9.0 จากเดิมเป็น 8.0)

นอกจากนี้ยังมีเรื่องของการที่แอปพลิเคชัน Crash บนเครื่องจริงที่ไม่ใช่ Simulator ที่รันบน iOS 14 Beta ซึ่งปัญหานี้นั้นทางทีม Flutter เองก็รับรู้แล้ว และกำลังแก้ไขอยู่ โดยบอกว่าให้ใจเย็น ๆ เพราะตอนนี้มันยังเป็น Beta ที่เขาปล่อยให้เพื่อให้เวลานักพัฒนาแก้ไข Software ตัวเองให้รองรับ ให้ใจเย็น ๆ

ส่วนตัวทางผู้เขียนเองเชื่อมั่นว่าเมื่อใดก็ตามที่ iOS 14 ใกล้จากเป็น Public Stable Release  (ประมาณเดือนกันยายน - ตุลาคม) ตอนนั้นทางทีม Flutter เองก็น่าจะแก้ไขปัญหาทั้งหมดเรียบร้อยแล้ว


Clipboard Prompt!

อีกหนึ่งฟีเจอร์ที่มาพร้อมกับ iOS 14 คือการที่ iOS จะมีการแจ้งเตือนเด้งขึ้นมาทุกครั้งที่แอปพลิเคชันเข้าถึงข้อมูลใน Clipboard ซึ่งปรากฎว่าแอปพลิเคชันที่ Build จาก Flutter เองก็พบปัญหาว่า Clipboard มันเด้งตลอด เนื่องจาก Flutter Rendering Engine มันไปอ่านข้อมูลใน Clipboard ตลอดเพื่อให้สามารถแสดงผล Popover ที่มี Quick Menu ต่าง ๆ เช่น Copy, Paste, Share ได้ โดยตอนนี้ก็ได้มีผู้เสนอวิธีในแก้ไขปัญหาเรียบร้อย ก็ต้องติดตามดูกันต่อไปว่าจะถูกนำไปรวมในตัว Core Engine เมื่อไร

โดยปัญหานี้นั้นกระทบกับแอปพลิเคชันที่ปัจจุบันที่ Build จาก Flutter เวอร์ชันปัจจุบัน แต่เครื่องอัพเดทเป็น iOS 14 เช่นกัน ทางแก้ก็คือต้องรอการแก้ไขใน Core ของ Flutter แล้วทำการ Build แอปพลิเคชันเวอร์ชันใหม่นั่นเอง


Text

เนื่องจาก Flutter นั้น Owns every pixels on screen ดังนั้น Text ต่าง ๆ Rendering engine จึงเป็นคนวาดขึ้นมาเองเช่นกัน แต่ก็กลับกลายเป็นปัญหาเนื่องจาก Text ที่ถูกวาดบน iOS 14 นั้นจะเหมือนเป็นตัวอักษรที่ถูกบีบ ซึ่งปัจจุบันก็ยังไม่มีความคืบหน้ามากนัก ได้แต่เอาใจช่วยให้ปัญหานี้ถูกแก้ไขก่อนที่ iOS 14 จะถูกปล่อยออกมาอย่างเป็นทางการ


Aesthetic

นอกจากนี้ก็ยังมีเรื่องอื่น ๆ ที่ไม่เชิงว่าเป็นปัญหามากนัก แต่ก็ช่วยให้แอปพลิเคชันเราดูดีขึ้นและมี Consistency กับแอปพลิเคชันอื่น ๆ บนระบบปฏิบัติการได้เช่นกัน ซึ่งได้แก่

  • เพิ่ม Font จาก SF Symbols 2 โดย SF Symbols ซึ่ง Apple ได้เปิดตัวไปเมื่องานครั้งก่อนนั้น ในปีนี้ก็ได้มาถึงเวอร์ชัน 2 แล้ว ซึ่งมาพร้อมกับสัญลักษณ์เดิมที่ปรับปรุงใหม่ รวมไปถึงสัญลักษณ์ใหม่ ๆ มากมาย ซึ่งมีความสวยงามเป็นอย่างมาก รวมไปถึงสามารถสร้างความรู้สึกที่ทำให้แอปพลิเคชันของเราเหมือนกับแอปพลิเคชันบน iOS จริง ๆ ได้มากยิ่งขึ้นไปอีก นอกจากนี้ยังมีข้อดีในส่วนของสัญลักษณ์ที่จะเหมือนกับแอปพลิเคชันอื่น ๆ บนระบบปฏิบัติการ ซึ่งช่วยให้ผู้ใช้สามารถเดาได้ดียิ่งขึ้นในการ Navigate ในแอปพลิเคชัน แต่อย่างไรก็ตามสำหรับส่วนนี้นั้นก็ดูไม่มีความหวังมากนัก เพราะอาจจะติดเรื่องของ License ก็ต้องติดตามกันต่อไป
  • ในส่วนของ ActivityIndicator หรือสัญลักษณ์หมุน ๆ ตอนเรากำลังทำอะไรที่ใช้เวลานานอะไรสักอย่าง ก็ได้มีการเปลี่ยนรูปแบบใหม่บน iOS 14 ซึ่งก็ต้องรอดูกันต่อไปว่าจะมีการปรับปรุงหรือไม่ โดยหาก Flutter ไม่อัพเดทเอง ก็อาจจะได้ชุมชนนักพัฒนาที่พัฒนา Package ที่เพิ่ม Widget ตัวนี้เข้ามาแทน
  • บน iPadOS เองปีนี้ Apple ก็ได้ Redefine ในส่วนของการ Navigate ในแอปพลิเคชันใหม่ โดยมีการเพิ่มสิ่งที่เรียกว่า Sidebar ขึ้นมา ตรงนี้เองก็มีคนเสนอ Proposal ไปเรียบร้อยในรูปแบบของ Widget ซึ่งก็ค่อนข้างคล้ายกับกรณีของ ActivityIndicator ที่หาก Flutter ไม่พัฒนาเอง ก็อาจได้ชุมชนนักพัฒนาที่พัฒนา Package ขึ้นมาแจกจ่ายกันเอง

New Features

นอกจากนี้เอง iOS 14 เองก็ได้มีฟีเจอร์ใหม่ ๆ เพิ่มเข้ามาอย่างมากมาย ได้แก่

Widget

สำหรับ Widget ที่เข้ามาเพิ่มวิธีใหม่ในการมีปฏิสัมพันธ์กับแอปพลิเคชันบนหน้าจอหลัก ซึ่ง ณ ปัจจุบันนั้นก็ไม่มีข้อมูลใด ๆ ออกมาว่าจะมีการ Support หรือไม่ สำหรับคนที่ต้องการเพิ่ม Widget ให้กับแอปพลิเคชันของตัวเองในตอนนี้ก็อาจจะต้องเขียน Swift บน Xcode เพื่อเรียกใช้งาน WidgetKit โดยตรง

App Clips

ส่วนของแอปพลิเคชันที่มีขนาดเล็กมาก (< 10MB) ที่ผู้ใช้งานสามารถดาวน์โหลดมาใช้งานได้อย่างรวดเร็ว สำหรับการทำสิ่งต่าง ๆ ณ​ เวลานั้น เช่น ใช้เพื่อสั่งอาหารในร้านอาหาร ในปัจจุบันนั้น สถานการณ์ก็ไม่ต่างกับ Widget มากนัก แต่อาจจะต้องมีการยุ่งกับโค้ดมากขึ้น เพราะในปัจจุบัน Flutter ยังไม่รองรับการ Support Multiple Targets โดย Default เพราะ App Clips เองก็ถือเป็นอีก Target หนึ่ง

Pull-down Menus

เวอร์ชันอัพเดทของ Context Menu ที่ทำให้การกดข้างบนปุ่มบางปุ่มจะโชว์เมนูเพิ่มเติมขึ้นมา สำหรับตัวนี้นั้นอาจจะดูมีอนาคต เพราะเป็นเพียง Widget หนึ่งเท่านั้น โดยหาก Flutter ไม่อัพเดทเองในเร็ว ๆ นี้ก็อาจจะได้ชุมชนนักพัฒนา ที่พัฒนา Package ขึ้นมา Support กันเอง

Scribble

ความสามารถใหม่บน iPadOS ที่จะช่วยให้ TextField รองรับการเขียนลงไปของ Apple Pencil และได้เป็น Text ออกมาเลย ตอนนี้ทางทีม Flutter รับรู้แล้ว และจัดให้เป็น Severe: New Feature ก็ต้องถือได้ว่าน่าจะเป็นหนึ่งในอัพเดทของอัพเดทหลักของ Flutter ในปีนี้เช่นเดียวกัน


และนั่นก็คือทั้งหมดของ iOS 14 และ Flutter ซึ่งก็ต้องบอกว่าทางทีม Flutter เองก็กำลังทำงานกันอย่างหนัก เพื่อให้มั่นใจได้ว่าฟีเจอร์ใหม่ ๆ จะได้รับการสนับสนุน เมื่อ iOS ถูกปล่อยออกมาอย่างเป็นทางการในสิ้นปีนี้นั่นเอง

สำหรับคนที่อยากติดตามความคืบหน้า ก็สามารถไปดูได้ที่

GitHub: iOS 14

GitHub: Xcode 12


📚 Hope you enjoy reading! 📚