เหตุการณ์การนำทาง

Navigation Event คือไลบรารีที่ให้บริการโซลูชัน Kotlin Multiplatform (KMP) สำหรับการผสานรวมเหตุการณ์การนำทางระดับระบบเข้ากับแอปพลิเคชัน โดยออกแบบมาให้เป็นเลเยอร์พื้นฐานสำหรับการจัดการเส้นทางการนำทาง ในแพลตฟอร์มที่รองรับต่างๆ

หัวข้อสำคัญ

ระบบเหตุการณ์การนำทางสร้างขึ้นโดยอิงตามรูปแบบตัวจัดการ-ตัวจัดส่งแบบรวมศูนย์ ซึ่งมักใช้ในลำดับชั้นบน-ย่อยเพื่อแมปกับโครงสร้าง UI ที่ซับซ้อน เช่น โครงสร้างที่พบใน Jetpack Compose

NavigationEventDispatcher เป็นคลาสส่วนกลางที่รับผิดชอบ การจัดการผู้ใช้เหตุการณ์การนำทางที่ลงทะเบียนทั้งหมด (NavigationEventHandler) และการจัดระเบียบโฟลว์ของเหตุการณ์

ในการตั้งค่าแบบลำดับชั้น ผู้จัดส่งทั้งหมดภายในเชนเดียวกันจะใช้ NavigationEventProcessor เดียวกัน ซึ่งจะจัดการสถานะส่วนกลางและรับประกันลำดับการจัดส่งเดียวที่รวมเป็นหนึ่งเดียวทั่วทั้งแผนผัง

NavigationEventHandler เป็นคลาสแบบนามธรรมที่รับและจัดการ เหตุการณ์การนำทางที่ส่งโดย NavigationEventDispatcher โดยจะกำหนดเมธอดเรียกกลับที่สอดคล้องกับขั้นตอนต่างๆ ของวงจร ท่าทางสัมผัสการนำทาง เช่น เมื่อท่าทางสัมผัสเริ่มต้น ดำเนินการ เสร็จสมบูรณ์ หรือถูก ยกเลิก

แฮนเดิลสามารถตอบสนองต่อเหตุการณ์เหล่านี้เพื่ออัปเดต UI หรือสถานะแอปพลิเคชันได้ เพื่อตอบสนองต่อการดำเนินการไปยังส่วนต่างๆ ของผู้ใช้ คุณลงทะเบียนแฮนเดิลหลายรายการกับ Dispatcher ได้ และระบบจะเรียกใช้แฮนเดิลตามลำดับความสำคัญและลำดับการลงทะเบียน

NavigationEvent คือคลาสข้อมูลที่มีรายละเอียดของ ท่าทางสัมผัสการนำทาง

NavigationEventInfo คือคลาสนามธรรมที่ให้ข้อมูลเชิงบริบท เกี่ยวกับสถานะการนำทาง

NavigationEventInput เป็นคลาสแบบนามธรรมสำหรับคอมโพเนนต์ที่สร้าง และส่งเหตุการณ์การนำทาง โดยจะทำหน้าที่เป็นด้าน "อินพุต" ของระบบการนำทาง ซึ่งจะแปลเหตุการณ์เฉพาะแพลตฟอร์ม (เช่น ท่าทางสัมผัสย้อนกลับของระบบหรือ การคลิกปุ่ม) เป็นเหตุการณ์มาตรฐานที่ส่งไปยัง NavigationEventDispatcher ได้

เส้นทางและทริกเกอร์การนำทางที่รองรับ

ระบบเหตุการณ์การนำทางได้รับการออกแบบมาให้ครอบคลุมมากกว่าแค่ปุ่มย้อนกลับของระบบ โดยมีการออกแบบที่รองรับทิศทางการนำทางและวิธีการป้อนข้อมูลหลายรายการในแพลตฟอร์มต่างๆ

เส้นทางที่รองรับ

แพลตฟอร์มต่างๆ รองรับทิศทางการนำทางที่แตกต่างกัน ดังนี้

แพลตฟอร์ม

กลับ

ขึ้น

กรอไปข้างหน้า

หน้าแรก

โทรศัพท์ Android

🚫

แท็บเล็ต Android

🚫

เว็บ (เบราว์เซอร์)

🚫

iOS (iPhone/iPad)

🚫

ทริกเกอร์ที่รองรับ

การจัดการอินพุตทำได้ผ่านกลไกต่างๆ ในแต่ละแพลตฟอร์ม ดังนี้

ทริกเกอร์

โทรศัพท์ Android

เว็บ (เบราว์เซอร์)

iOS (iPhone/iPad)

ปุ่มย้อนกลับของแป้นพิมพ์

✅ กลับ

✅ กลับ

ปุ่มย้อนกลับของซอฟต์แวร์

🚫

✅ กลับ

✅ กลับ

ปุ่มซอฟต์แวร์ขึ้น

✅ ขึ้น

🚫

🚫

ท่าทางสัมผัสจากซ้าย

✅ กลับ

✅ กลับ

ท่าทางสัมผัสจากขวา

✅ กลับ

✅ ส่งต่อ

ท่าทางสัมผัสจากด้านล่าง

✅ หน้าแรก

🚫

✅ หน้าแรก