ข่าวผลิตภัณฑ์

Jetpack Navigation 3 พร้อมให้ใช้งานอย่างเสถียรแล้ว

ใช้เวลาอ่าน 3 นาที
Don Turner
วิศวกรนักพัฒนาซอฟต์แวร์สัมพันธ์

Jetpack Navigation 3 เวอร์ชัน 1.0 เสถียรแล้ว 🎉 นำไปใช้ในแอปเวอร์ชันที่ใช้งานจริงได้แล้ววันนี้ JetBrains ใช้ฟีเจอร์นี้ในแอป KotlinConf อยู่แล้ว

Navigation 3 เป็นไลบรารีการนำทางใหม่ที่สร้างขึ้นตั้งแต่ต้นเพื่อรองรับสถานะ Jetpack Compose state โดยจะช่วยให้คุณควบคุม Back Stack ได้อย่างเต็มที่ ช่วยรักษาสถานะการนำทาง และช่วยให้คุณสร้างเลย์เอาต์แบบปรับอัตโนมัติ (เช่น รายละเอียดรายการ) ได้อย่างง่ายดาย นอกจากนี้ยังมีเวอร์ชันข้ามแพลตฟอร์มจาก JetBrains ด้วย

เหตุใดจึงต้องมีไลบรารีใหม่

ไลบรารี Jetpack Navigation เดิม (ปัจจุบันคือ Nav2) ได้รับการออกแบบเมื่อ 7 ปีที่แล้ว และแม้ว่าไลบรารีนี้จะตอบโจทย์เป้าหมายเดิมได้เป็นอย่างดีและได้รับการปรับปรุงอย่างต่อเนื่อง แต่ปัจจุบันวิธีสร้างแอปได้เปลี่ยนแปลงไปอย่างสิ้นเชิง

การเขียนโปรแกรมเชิงโต้ตอบกับ UI ที่ประกาศได้กลายเป็นเรื่องปกติไปแล้ว และ Nav3 ก็รองรับแนวทางนี้ ตัวอย่างเช่น NavDisplay (คอมโพเนนต์ UI ของ Nav3 ที่ แสดงหน้าจอ) จะสังเกตรายการคีย์ (แต่ละคีย์แสดงถึงหน้าจอ) ที่รองรับโดยสถานะ Compose และอัปเดต UI เมื่อรายการนั้นมีการเปลี่ยนแปลง

nav-display.png

นอกจากนี้ Nav2 ยังอาจทำให้การมี แหล่งข้อมูลเดียวที่เชื่อถือได้ สำหรับสถานะการนำทางเป็นเรื่องยาก เนื่องจากมีสถานะภายในของตัวเอง แต่ Nav3 จะให้คุณระบุสถานะของคุณเอง ซึ่งจะช่วยให้คุณควบคุมได้อย่างเต็มที่

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

แนวทางนี้ช่วยให้คุณทำสิ่งต่อไปนี้ได้

อ่านเพิ่มเติมเกี่ยวกับการออกแบบและฟีเจอร์ต่างๆ ได้ในบล็อกเปิดตัว

การย้ายข้อมูลจาก Navigation 2

หากคุณใช้ Nav2 อยู่แล้ว โดยเฉพาะอย่างยิ่ง Navigation Compose คุณควรพิจารณาย้ายข้อมูลไปยัง Nav3 เรามีคำแนะนำในการย้ายข้อมูลเพื่อช่วยคุณในเรื่องนี้ ขั้นตอนสำคัญมีดังนี้

  1. เพิ่มการพึ่งพิง Navigation 3
  2. อัปเดตเส้นทางการนำทางเพื่อติดตั้งใช้งาน NavKey เส้นทางไม่จำเป็นต้องติดตั้งใช้งานอินเทอร์เฟซนี้เพื่อใช้ Nav3 แต่หากติดตั้งใช้งาน คุณจะใช้ประโยชน์จากฟังก์ชัน rememberNavBackStack ของ Nav3 เพื่อสร้าง Back Stack แบบถาวรได้
  3. สร้างคลาสเพื่อเก็บและแก้ไขสถานะการนำทาง ซึ่งเป็นที่เก็บ Back Stack
  4. แทนที่ NavController ด้วยคลาสเหล่านี้
  5. ย้ายปลายทางจาก NavGraph ของ NavHost ไปยัง entryProvider
  6. แทนที่ NavHost ด้วย NavDisplay

การทดลองย้ายข้อมูล AI Agent

คุณอาจต้องการทดลองใช้ AI Agent เพื่ออ่านคำแนะนำในการย้ายข้อมูลและทำตามขั้นตอนในโปรเจ็กต์ หากต้องการลองใช้ฟีเจอร์นี้กับ Gemini ในโหมด Agent ของ Android Studio ให้ทำดังนี้

  • บันทึกคำแนะนำเวอร์ชัน Markdown นี้ลงในโปรเจ็กต์
  • วางข้อความแจ้งนี้ลงใน Agent (แต่ไม่ต้องกด Enter): "ย้ายข้อมูลโปรเจ็กต์นี้ไปยัง Navigation 3 โดยใช้ "
  • พิมพ์ @migration-guide.md ซึ่งจะส่งคำแนะนำเป็นบริบทให้กับ Agent

โปรดตรวจสอบการเปลี่ยนแปลงที่ AI Agent ทำอย่างละเอียดเสมอ เนื่องจาก AI Agent อาจทำผิดพลาดได้

เรายินดีรับฟังความคิดเห็นเกี่ยวกับประสิทธิภาพของคุณหรือ Agent โปรดส่งความคิดเห็นถึงเราที่นี่

สูตรการนำทางที่น่าสนใจสำหรับสถานการณ์ที่พบบ่อย

เรามีที่เก็บสูตรสำหรับกรณีการใช้งานที่พบบ่อยแต่มีความซับซ้อน ซึ่งจะแสดงวิธีรวม API ของ Nav3 ในลักษณะที่เฉพาะเจาะจง เพื่อให้คุณเลือกหรือแก้ไขสูตรให้ตรงกับความต้องการของคุณได้ หากสูตรใดได้รับความนิยม เราจะพิจารณา "เลื่อนระดับ" ส่วนที่ไม่ซับซ้อนของสูตรนั้นไปยังไลบรารีหลักของ Nav3 หรือไลบรารีส่วนเสริม

code-recipes.png

ปัจจุบันมีสูตร 19 สูตร ซึ่งรวมถึงสูตรสำหรับกรณีต่อไปนี้

ปัจจุบันเรากำลังพัฒนาสูตร Deep Link รวมถึงการผสานรวม Koin และวางแผนที่จะพัฒนาสูตรอื่นๆ อีกมากมาย นอกจากนี้ วิศวกรจาก JetBrains ยังได้เผยแพร่สูตรเวอร์ชัน Compose Multiplatform ด้วย

หากคุณมีกรณีการใช้งานที่พบบ่อยซึ่งต้องการให้เราสร้างสูตร โปรด ส่งคำขอสูตร

สรุป

หากต้องการเริ่มต้นใช้งาน Nav3 โปรดดู เอกสาร และ สูตร นอกจากนี้ โปรดคอยติดตามเนื้อหาทางเทคนิคตลอดทั้งสัปดาห์ ซึ่งรวมถึงเนื้อหาต่อไปนี้

  • วิดีโอเจาะลึกเกี่ยวกับ API ที่ครอบคลุมการแยกส่วน ภาพเคลื่อนไหว และเลย์เอาต์แบบปรับอัตโนมัติ
  • เซสชัน AMA ถามตอบทุกข้อสงสัยแบบสดกับวิศวกรที่สร้าง Nav3

สัปดาห์พิเศษของ Nav3 จะเริ่มขึ้นในวันที่ 1 ธ.ค. 2025


โปรดรายงานปัญหาที่พบที่นี่

เขียนโดย

อ่านต่อ