ข่าวสารเกี่ยวกับผลิตภัณฑ์

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

ใช้เวลาอ่าน 3 นาที
ดูโปรไฟล์ของ Don Turner
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

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

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

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

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

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

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

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

code-recipes.png

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

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

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

สรุป

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

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

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


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

เขียนโดย:
อ่านต่อ