Fixed according to feedback
This commit is contained in:
+54
-45
@@ -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:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user