Navigation Event คือไลบรารีที่ให้บริการโซลูชัน Kotlin Multiplatform (KMP) สำหรับการผสานรวมเหตุการณ์การนำทางระดับระบบเข้ากับแอปพลิเคชัน โดยออกแบบมาให้เป็นเลเยอร์พื้นฐานสำหรับการจัดการเส้นทางการนำทาง ในแพลตฟอร์มที่รองรับต่างๆ
หัวข้อสำคัญ
ระบบเหตุการณ์การนำทางสร้างขึ้นโดยอิงตามรูปแบบตัวจัดการ-ตัวจัดส่งแบบรวมศูนย์ ซึ่งมักใช้ในลำดับชั้นบน-ย่อยเพื่อแมปกับโครงสร้าง UI ที่ซับซ้อน เช่น โครงสร้างที่พบใน Jetpack Compose
NavigationEventDispatcher
NavigationEventDispatcher เป็นคลาสส่วนกลางที่รับผิดชอบ
การจัดการผู้ใช้เหตุการณ์การนำทางที่ลงทะเบียนทั้งหมด
(NavigationEventHandler) และการจัดระเบียบโฟลว์ของเหตุการณ์
ในการตั้งค่าแบบลำดับชั้น ผู้จัดส่งทั้งหมดภายในเชนเดียวกันจะใช้ NavigationEventProcessor เดียวกัน ซึ่งจะจัดการสถานะส่วนกลางและรับประกันลำดับการจัดส่งเดียวที่รวมเป็นหนึ่งเดียวทั่วทั้งแผนผัง
NavigationEventHandler
NavigationEventHandler เป็นคลาสแบบนามธรรมที่รับและจัดการ
เหตุการณ์การนำทางที่ส่งโดย NavigationEventDispatcher โดยจะกำหนดเมธอดเรียกกลับที่สอดคล้องกับขั้นตอนต่างๆ ของวงจร
ท่าทางสัมผัสการนำทาง เช่น เมื่อท่าทางสัมผัสเริ่มต้น ดำเนินการ เสร็จสมบูรณ์ หรือถูก
ยกเลิก
แฮนเดิลสามารถตอบสนองต่อเหตุการณ์เหล่านี้เพื่ออัปเดต UI หรือสถานะแอปพลิเคชันได้ เพื่อตอบสนองต่อการดำเนินการไปยังส่วนต่างๆ ของผู้ใช้ คุณลงทะเบียนแฮนเดิลหลายรายการกับ Dispatcher ได้ และระบบจะเรียกใช้แฮนเดิลตามลำดับความสำคัญและลำดับการลงทะเบียน
NavigationEvent
NavigationEvent คือคลาสข้อมูลที่มีรายละเอียดของ
ท่าทางสัมผัสการนำทาง
NavigationEventInfo
NavigationEventInfo คือคลาสนามธรรมที่ให้ข้อมูลเชิงบริบท
เกี่ยวกับสถานะการนำทาง
NavigationEventInput
NavigationEventInput เป็นคลาสแบบนามธรรมสำหรับคอมโพเนนต์ที่สร้าง
และส่งเหตุการณ์การนำทาง โดยจะทำหน้าที่เป็นด้าน "อินพุต" ของระบบการนำทาง
ซึ่งจะแปลเหตุการณ์เฉพาะแพลตฟอร์ม (เช่น ท่าทางสัมผัสย้อนกลับของระบบหรือ
การคลิกปุ่ม) เป็นเหตุการณ์มาตรฐานที่ส่งไปยัง NavigationEventDispatcher ได้
เส้นทางและทริกเกอร์การนำทางที่รองรับ
ระบบเหตุการณ์การนำทางได้รับการออกแบบมาให้ครอบคลุมมากกว่าแค่ปุ่มย้อนกลับของระบบ โดยมีการออกแบบที่รองรับทิศทางการนำทางและวิธีการป้อนข้อมูลหลายรายการในแพลตฟอร์มต่างๆ
เส้นทางที่รองรับ
แพลตฟอร์มต่างๆ รองรับทิศทางการนำทางที่แตกต่างกัน ดังนี้
แพลตฟอร์ม |
กลับ |
ขึ้น |
กรอไปข้างหน้า |
หน้าแรก |
โทรศัพท์ Android |
✅ |
✅ |
🚫 |
✅ |
แท็บเล็ต Android |
✅ |
✅ |
🚫 |
✅ |
เว็บ (เบราว์เซอร์) |
✅ |
✅ |
✅ |
🚫 |
iOS (iPhone/iPad) |
✅ |
🚫 |
✅ |
✅ |
ทริกเกอร์ที่รองรับ
การจัดการอินพุตทำได้ผ่านกลไกต่างๆ ในแต่ละแพลตฟอร์ม ดังนี้
ทริกเกอร์ |
โทรศัพท์ Android |
เว็บ (เบราว์เซอร์) |
iOS (iPhone/iPad) |
ปุ่มย้อนกลับของแป้นพิมพ์ |
✅ กลับ |
❓ |
✅ กลับ |
ปุ่มย้อนกลับของซอฟต์แวร์ |
🚫 |
✅ กลับ |
✅ กลับ |
ปุ่มซอฟต์แวร์ขึ้น |
✅ ขึ้น |
🚫 |
🚫 |
ท่าทางสัมผัสจากซ้าย |
✅ กลับ |
❓ |
✅ กลับ |
ท่าทางสัมผัสจากขวา |
✅ กลับ |
❓ |
✅ ส่งต่อ |
ท่าทางสัมผัสจากด้านล่าง |
✅ หน้าแรก |
🚫 |
✅ หน้าแรก |