Menu Close

Flutter : อัพเดทเวอร์ชัน 2.5 มีอะไรใหม่บ้าง

เมื่อวันที่ 8 กันยายนที่ผ่านมา ทาง Google ได้ประกาศการปล่อยเวอร์ชันอัพเดทของ Flutter ในเวอร์ชัน 2.5 ซึ่งเป็นการปรับปรุงประสิทธิภาพการทำงาน การอัพเดทเครื่องมือ Dev tools ต่างๆ อีกทั้งยังรองรับ new Material You มี template ใหม่ด้วย และอื่นๆ อีก

ฟีเจอร์ใหม่ ได้แก่

  • การรองรับการแสดงผลแบบเต็มหน้าจอบน Android
  • รองรับ Material You
  • อัพเดท Text Edit ให้รองรับคีย์บอร์ดแบบ switchable keyboard shortcuts
  • เพิ่มเติมรายละเอียดของ Widget ใน Widget Inspector
  • รองรับการเพิ่ม dependencies ในโปรแกรม Visual Studio Code แบบใหม่
  • รองรับการแสดงผลข้อมูลการทดสอบจากการรัน Test ใน IntelliJ และ Android Studio
  • มี Template ใหม่ ที่ดีกว่าเดิม สำหรับแอพ Flutter

มาดูในรายละเอียดกันว่า เวอร์ชันนี้อัพเดทอะไรบ้าง

1.เพิ่มประสิทธิภาพ : iOS shader warmup, async tasks, GC & message passing

แก้ไขอาการ frame lag ได้เยอะกว่าเดิมหลายเท่า
แก้ไขปัญหาเรื่อง GCs ทำให้คืนค่า Memory ได้ดีขึ้น
ลดเวลาการส่ง Message ระหว่าง Dart และ Objective-C/Swift บน iOS

ในเวอร์ชั่นนี้ Flutter สามารถ built บนซีพียู Apple Silicon M1 Macs รันแบบ native บน ARM iOS Simulator

2.ภาษา Dart เวอร์ชัน 2.14

2.1) Apple Silicon รองรับใน Dart SDK แล้ว

2.2) Standard lint ได้แก่ไฟล์

  • package:lints/core.yaml ไฟล์หลักของกฏที่ใช้ในการกำหนดสไตล์ของภาษา Dart ที่นักพัฒนาภาษา Dart ต้องทำตามสไตล์นี้
  • package:lints/recommended.yaml เซ็ตนี้แนะนำสำหรับโค้ดภาษา Dart ทั่วไป
  • package:flutter_lints/flutter.yaml เซ็ตนี้แนะนำสำหรับโค้ด Flutter

2.3) Dart formatter and cascades

formatter ที่ใช้กับ cascades ได้ถูกปรับใหม่เพื่อป้องกันการสับสน ยกตัวอย่างเช่น การเรียกใช้งาน doIt() หลังจาก Expression เสร็จเงื่อนไขแล้วจะมาทำ doIt() ในโค้ดแบบเดิมจะเขียน doIt() ไว้หลัง ผลลัพธ์ที่ Expression เป็น เท็จ เลยจะสับสนว่า จะทำต่อเมื่อ Expression เป็นเท็จเท่านั้น

var result = errorState ? foo : bad..doIt();

ในเวอร์ชันใหม่ จึงปรับแต่งรูปแบบใหม่เพื่อทำให้เข้าใจมากกว่าเดิม เป็น

var result = errorState ? foo : bad
  ..doIt();

2.4) Pub support for ignoring files

สามารถเขียนรายชื่อไฟล์ที่ไม่ต้องการจะอัพโหลดเข้าใน pub.dev ไว้ในไฟล์ .pubignore ได้

2.5) Pub and dart test performance

สามารถใช้งาน Dart test tool ผ่าน command dart test ได้

คำสั่งนี้จะไปเรียกใช้งานคำสั่ง command pub run test:test อีกที

dart test

2.6) ฟีเจอร์ภาษาใหม่

  • triple shift operator (>>>) จะทำงานคล้ายกับ >> ที่เป็นการ shift (ดำเนินการทางคณิตศาสตร์) แต่ >>> จะเป็นการ shift แบบ logic โดยไม่สนว่าเมื่อเลื่อนไปแล้วจะทำให้ค่าเป็นบวกหรือลบ
  • อนุญาตให้ ใช้ generic function types เป็น type argument ได้ ตัวอย่าง
late List<T Function<T>(T)> idFunctions;
var callback = [<T>(T value) => value];
late S Function<S extends T Function<T>(T)>(S) f;
  • อนุญาตให้ใส่ type arguments ใน Annotations ได้ ตัวอย่าง
@TypeHelper<int>(42, "The meaning")

2.7) แพ็คเก็จและไลบรารี่หลักมีการเปลี่ยนแปลง

  • dart:core เพิ่มฟังก์ชัน hash, hashAll, hashAllUnordered
  • dart:core ปรับปรุง native Dateive class
  • package:ffi เพิ่มการรองรับสำหรับหน่วยความจำที่ใช้ arena allocator
  • package:ffigen รองรับ Dart typedefs from C typedefs

3.เฟรมเวิร์ค : รองรับ Android แบบเต็มหน้าจอ, Material You และ text editing shortcuts

New Android edge-to-edge mode: normal mode(ซ้าย) Edge to Edge mode(กลาง) Edge to Edge with a custom SystemUIOverlayStyle(ขวา)

รองรับ new Material You (aka v3) เพิ่มการอัพเดท ขนาดและธีมของ floating action button และเพิ่ม MaterialState.scrolledUnder state

New Material You FAB sizes
New MaterialState.scrolledUnder state in action
New scroll metrics notifications สามารถกำหนดให้แสดงหรือซ่อนสกอบาร์ได้อย่างอัตโนมัติโดยไม่มีการเลื่อนสกอ
แบนเนอร์ด้านบนใน Flutter 2.5 จะแสดงอยู่จนกว่าผู้ใช้จะกดปุ่มปิด

4. Plugins: ปรับปรุงปลั๊กอิน camera, image picker และ plus plugins

5.Flutter DevTools: performance, Widget inspector

  • ปรับปรุงประสิทธิภาพของ Flutter DevTools
  • เพิ่มรายละเอียดของ Widget ใน Widget Inspector
  • Flutter DevTools ได้ปรับปรุงให้ UX ใช้งานง่ายยิ่งขึ้น

6.IntelliJ/Android Studio

7.Visual Studio Code

  • เพิ่มคำสั่ง Dart: Add Dependency และ Dart: Add Dev Dependency
  • เพิ่มคำสั่ง Fix All สำหรับแก้ไขโค้ดให้ถูกต้องทั้งหมด จะใช้กับไฟล์ .dart

8.Tools

8.1) Two-Page List View theme

ธีมแบบใหม่ เป็นแบบ two-page List view โดยจะมีหน้ารายการและกดดูรายละเอียดได้ และมีปุ่มให้ปรับ option โดยจะเป็นการปรับ theme light and dark mode การสร้างธีมสามารถใช้คำสั่ง

$ flutter create -t skeleton my_app

ธีมใหม่นี้มีฟีเจอร์ดังต่อไปนี้

  • ใช้ ChangeNotifier เพื่อประสานและส่งค่าไปมาระหว่าง Widget หลายๆตัว
  • ทำ localizations โดยใช้ไฟล์ arb
  • มีรูปภาพตัวอย่างและโฟลเดอร์หลายขนาด (1x, 2x, 3x) สำหรับ image asset
  • ใช้ feature-first ในการจัดการโฟลเดอร์
  • รองรับ shared preferences
  • รองรับ light และ dark theming
  • รองรับการกดเปลี่ยนหน้าระหว่างหลายหน้า

8.2) Pigeon 1.0

Pigeon 1.0 เป็นโปรแกรมสร้างโค้ดสำหรับสร้างโค้ด typesafe ระหว่าง Flutter และแพลตฟอร์มที่รันอยู่

Pigeon เริ่มมีการใช้ในบางปลั๊กอินจาก Flutter team แล้ว

สรุป

ใน Flutter เวอร์ชัน 2.5 นี้เน้นปรับปรุงเรื่องประสิทธิภาพการทำงานของ Flutter และ DevTools ให้มีประสิทธิภาพมากยิ่งขึ้น แก้ไขปัญหาที่เกิดขึ้นจากเวอร์ชันก่อน และเพิ่มตัวช่วยในการพัฒนาโปรแกรมในโปรแกรม IntelliJ, Android Studio และ Visual Studio Code และมีการปรับปรุง Widget และ Plugin ต่างๆ ให้มีประสิทธิภาพมากยิ่งขึ้น

และที่เป็นไฮไลท์สำหรับเวอร์ชันนี้คือ ธีมใหม่นั้นเอง ในเวอร์ชันนี้เราสามารถสร้างแอพเริ่มต้นแบบ Two Page ListView ได้จาก theme template แล้ว ทำให้การพัฒนาโค้ดสะดวกยิ่งกว่าเดิม

อ้างอิง

  1. https://medium.com/flutter/whats-new-in-flutter-2-5-6f080c3f3dc
  2. https://medium.com/dartlang/announcing-dart-2-14-b48b9bb2fb67
Posted in flutter

ใส่ความเห็น