Fixed according to feedback

This commit is contained in:
2026-01-10 17:12:32 +07:00
parent f72f0be591
commit 19fb847b7d
24 changed files with 1531 additions and 1266 deletions
+54 -45
View File
@@ -30,8 +30,6 @@ Alibaba
สามารถคอมไพล์เป็นโค้ดเครื่อง JavaScript หรือ WebAssembly ได้ รองรับอินเทอร์เฟซ มิกซ์อิน
คลาสนามธรรม เจเนอริกแบบรีไฟด์ และการอนุมานชนิดข้อมูล
#pagebreak()
== สถาปัตยกรรม
#iii Flutter ถูกออกแบบมาให้เป็นระบบแบบเลเยอร์ที่ต่อขยายได้
@@ -66,26 +64,31 @@ Linux การใช้ตัวฝังตัว โค้ด Flutter สา
ที่อยู่เบื้องหลังด้วยคลาส Dart ไลบรารีนี้เปิดเผยส่วนประกอบพื้นฐานระดับต่ำสุด เช่น
คลาสสำหรับควบคุมระบบย่อยการรับข้อมูล กราฟิก และการแสดงผลข้อความ
#pagebreak()
#iii โดยทั่วไป นักพัฒนาจะโต้ตอบกับ Flutter ผ่านเฟรมเวิร์ก Flutter
ซึ่งเป็นเฟรมเวิร์กที่ทันสมัยและตอบสนองต่อสิ่งรอบข้าง เขียนด้วยภาษา Dart
เฟรมเวิร์กนี้ประกอบด้วยชุดไลบรารีแพลตฟอร์ม เลย์เอาต์ และพื้นฐานที่ครบครัน
ซึ่งประกอบด้วยเลเยอร์หลายชั้น เริ่มจากล่างขึ้นบน ได้แก่:
เฟรมเวิร์กนี้ประกอบด้วยชุดไลบรารี แพลตฟอร์ม#jb เลย์เอาต์ และพื้นฐานที่ครบครัน
ซึ่งประกอบด้วยเลเยอร์หลายชั้น เริ่มจากล่างขึ้นบน ได้แก่
- คลาสพื้นฐานและบริการส่วนประกอบต่างๆ เช่น แอนิเมชัน การวาดภาพ และท่าทางสัมผัส
ซึ่งนำเสนอนามธรรมที่ใช้กันทั่วไปเหนือพื้นฐานที่อยู่เบื้องหลัง
#[
#set enum(indent: 5.5em)
+ คลาสพื้นฐานและบริการส่วนประกอบต่างๆ เช่น แอนิเมชัน การวาดภาพ และท่าทางสัมผัส
ซึ่งนำเสนอนามธรรมที่ใช้กันทั่วไปเหนือพื้นฐานที่อยู่เบื้องหลัง
- เลเยอร์การเรนเดอร์ให้นามธรรมสำหรับการจัดการเลย์เอาต์ ด้วยเลเยอร์นี้
คุณสามารถสร้างโครงสร้างแบบต้นไม้ของวัตถุที่เรนเดอร์ได้ คุณสามารถจัดการวัตถุเหล่านี้แบบไดนามิก
โดยโครงสร้างแบบต้นไม้จะอัปเดตเลย์เอาต์โดยอัตโนมัติเพื่อสะท้อนการเปลี่ยนแปลงของคุณ
+ เลเยอร์การเรนเดอร์ให้นามธรรมสำหรับการจัดการเลย์เอาต์ ด้วยเลเยอร์นี้
คุณสามารถสร้างโครงสร้างแบบต้นไม้ของวัตถุที่เรนเดอร์ได้ คุณสามารถจัดการวัตถุเหล่านี้แบบไดนามิก
โดยโครงสร้างแบบต้นไม้จะอัปเดตเลย์เอาต์โดยอัตโนมัติเพื่อสะท้อนการเปลี่ยนแปลงของคุณ
- เลเยอร์วิดเจ็ตเป็นนามธรรมของการประกอบ
วัตถุเรนเดอร์แต่ละชิ้นในเลเยอร์การเรนเดอร์จะมีคลาสที่สอดคล้องกันในเลเยอร์วิดเจ็ต นอกจากนี้
เลเยอร์วิดเจ็ตยังช่วยให้คุณกำหนดการรวมกันของคลาสที่คุณสามารถนำกลับมาใช้ใหม่ได้
นี่คือเลเยอร์ที่แนะนำโมเดลการเขียนโปรแกรมแบบตอบสนอง
+ เลเยอร์วิดเจ็ตเป็นนามธรรมของการประกอบ
วัตถุเรนเดอร์แต่ละชิ้นในเลเยอร์การเรนเดอร์จะมีคลาสที่สอดคล้องกันในเลเยอร์วิดเจ็ต นอกจากนี้
เลเยอร์วิดเจ็ตยังช่วยให้คุณกำหนดการรวมกันของคลาสที่คุณสามารถนำกลับมาใช้ใหม่ได้
นี่คือเลเยอร์ที่แนะนำโมเดลการเขียนโปรแกรมแบบตอบสนอง
- ไลบรารี Material และ Cupertino
นำเสนอชุดควบคุมที่ครอบคลุมซึ่งใช้ส่วนประกอบพื้นฐานของเลเยอร์วิดเจ็ตเพื่อนำภาษาการออกแบบ
Material หรือ iOS ไปใช้
+ ไลบรารี Material และ Cupertino
นำเสนอชุดควบคุมที่ครอบคลุมซึ่งใช้ส่วนประกอบพื้นฐานของเลเยอร์วิดเจ็ตเพื่อนำภาษาการออกแบบ
Material หรือ iOS ไปใช้
]
#iii เฟรมเวิร์ก Flutter มีขนาดค่อนข้างเล็ก
ฟีเจอร์ระดับสูงหลายอย่างที่นักพัฒนาอาจใช้ถูกพัฒนาขึ้นมาในรูปแบบของแพ็กเกจ
@@ -94,8 +97,6 @@ Linux การใช้ตัวฝังตัว โค้ด Flutter สา
แพ็กเกจบางส่วนมาจากระบบนิเวศที่กว้างกว่า ครอบคลุมบริการต่างๆ เช่น การชำระเงินภายในแอป
การตรวจสอบสิทธิ์ของ Apple และแอนิเมชัน
#pagebreak()
== โครงสร้างของแอปพลิเคชัน
#iii แผนภาพต่อไปนี้แสดงภาพรวมของส่วนประกอบต่างๆ ที่ประกอบกันเป็นแอป Flutter
@@ -104,35 +105,41 @@ Linux การใช้ตัวฝังตัว โค้ด Flutter สา
คำอธิบายด้านล่างจะอธิบายคำศัพท์บางคำที่ใช้กันทั่วไปในการอธิบายส่วนประกอบของแอป Flutter
#afigure(
image("Flutter/app-anatomy.svg", width: 3in),
image("Flutter/app-anatomy.svg", width: 2.5in),
attr: [Flutter, ภายใต้ CC BY 4.0],
alt: "แผนผังสถาปัตยกรรม Flutter",
caption: [สถาปัตยกรรม Flutter],
alt: "เลเยอร์ต่าง ๆ ของแอพลิเคชัน Flutter ที่ถูกสร้างโดย flutter create",
caption: [เลเยอร์ต่าง ของแอพลิเคชัน Flutter],
)
- แอปพลิเคชัน Dart (Dart app)
- ประกอบวิดเจ็ตเข้าด้วยกันเพื่อสร้าง UI ที่ต้องการ
- ดำเนินการตามตรรกะทางธุรกิจ
- นักพัฒนาแอปเป็นเจ้าของ
- เฟรมเวิร์ก (Framework)
- ให้ API ระดับสูงสำหรับการสร้างแอปคุณภาพสูง (ตัวอย่างเช่น วิดเจ็ต การทดสอบการกด#jb
การตรวจจับท่าทาง การเข้าถึงได้ และการอินพุตข้อความ)
- ประกอบต้นวิดเจ็ตของแอปพลิเคชันเป็นฉาก
#pagebreak()
- เอนจิน (Engine)
- มีหน้าที่แปลงฉากเป็นรูปแบบแรสเตอร์
- ให้การทำงานระดับต่ำของแกนกลางของ Flutter API (เช่น กราฟิก การจัดข้อความ และรันไทม์
#[
#set enum(indent: 9.25em)
=== แอปพลิเคชัน Dart (Dart app)
+ ประกอบวิดเจ็ตเข้าด้วยกันเพื่อสร้าง UI ที่ต้องการ
+ ดำเนินการตามตรรกะทางธุรกิจ
+ นักพัฒนาแอปเป็นเจ้าของ
=== เฟรมเวิร์ก (Framework)
+ ให้ API ระดับสูงสำหรับการสร้างแอปคุณภาพสูง (ตัวอย่างเช่น วิดเจ็ต การทดสอบการกด
การตรวจจับท่าทาง การเข้าถึงได้ และการอินพุต ข้อความ)
+ ประกอบต้นวิดเจ็ตของแอปพลิเคชันเป็นฉาก
=== เอนจิน (Engine)
+ มีหน้าที่แปลงฉากเป็นรูปแบบแรสเตอร์
+ ให้การทำงานระดับต่ำของแกนกลางของ Flutter API (เช่น กราฟิก การจัดข้อความ และรันไทม์
Dart)
- เปิดเผยฟังก์ชันระดับนี้ให้แก่เฟรมเวิร์กผ่าน API `dart:ui`
- บูรณาการกับแพลตฟอร์มต่าง ด้วย API ตัวฝังตัว
- ตัวฝังตัว (Embedder)
- ประสานงานกับระบบปฏิบัติการภายใต้สำหรับการเข้าถึงบริการต่าง เช่น พื้นผิวการเรนเดอร์
+ เปิดเผยฟังก์ชันระดับนี้ให้แก่เฟรมเวิร์กผ่าน API `dart:ui`
+ บูรณาการกับแพลตฟอร์มต่าง ด้วย API ตัวฝังตัว
=== ตัวฝังตัว (Embedder)
+ ประสานงานกับระบบปฏิบัติการภายใต้สำหรับการเข้าถึงบริการต่าง เช่น พื้นผิวการเรนเดอร์
การเข้าถึง และการป้อนข้อมูล
- จัดการลูปอิเวนต์
- เปิดเผย API เฉพาะแพลตฟอร์มเพื่อบูรณาการตัวฝังตัวเข้าไปยังแอป
- ตัวรัน (Runner)
- ประกอบชิ้นส่วนที่ถูกเปิดเผยโดยตัวฝังตัวเข้าเป็นแพคเกจแอปพลิเคชันที่สามารถใช้งานได้บนแพลตฟอร์มเป้าหมาย
- บางส่วนถูกสร้างขึ้นโดย `flutter create` และมีเจ้าของเป็นผู้พัฒนาแอป
+ จัดการลูปอิเวนต์
+ เปิดเผย API เฉพาะแพลตฟอร์มเพื่อบูรณาการตัวฝังตัวเข้าไปยังแอป
=== ตัวรัน (Runner)
+ ประกอบชิ้นส่วนที่ถูกเปิดเผยโดยตัวฝังตัวเข้าเป็นแพคเกจแอปพลิเคชันที่สามารถใช้งานได้บนแพลตฟอร์มเป้าหมาย
+ บางส่วนถูกสร้างขึ้นโดย `flutter create` และมีเจ้าของเป็นผู้พัฒนาแอป
]
== ระบบการดีไซน์
@@ -140,11 +147,11 @@ Linux การใช้ตัวฝังตัว โค้ด Flutter สา
#[
#set enum(indent: 5.5em)
+ Material Design: การดีไซน์ของ Google สำหรับ Android
+ Cupertino Design: การดีไซน์ของ Apple สำหรับ iOS
+ Material Design คือการดีไซน์ของ Google สำหรับ Android
+ Cupertino Design คือการดีไซน์ของ Apple สำหรับ iOS
]
#iii *หมายเหตุ:* Cupertino Design ถูกแทนที่โดย Liquid Glass แล้ว โดยในปัจจุบันทีม Flutter
#iii อย่างไรก็ตาม Cupertino Design ถูกแทนที่โดย Liquid Glass แล้ว โดยในปัจจุบันทีม Flutter
กำลังทำการตรวจสอบและแก้ไขโครงสร้างระบบดีไซน์ ดังนั้น หากมีผู้พัฒนาต้องการใช้เอฟเฟกต์#jb Liquid
Glass ในแอปพลิเคชัน Flutter จึงจำเป็นต้องพึงพาแพคเกจบุคคลที่สามก่อนในขณะนี้ (Flutter เวอร์ชัน
3.38.5 เวลาที่พิมพ์)
@@ -198,6 +205,8 @@ Glass ในแอปพลิเคชัน Flutter จึงจำเป็
การแปลงแผนผังหลายแผนผังของวัตถุให้เป็นแผนผังระดับล่างของวัตถุ
และการแพร่กระจายการเปลี่ยนแปลงไปยังแผนผังวิดเจ็ตเหล่านี้
#pagebreak()
#iii วิดเจ็ตประกาศส่วนติดต่อผู้ใช้โดยการเขียนทับเมธอด `build()` ซึ่งเป็นฟังก์ชันที่แปลงสถานะเป็น
UI: