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

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

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

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

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

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

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

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

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

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

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

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

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

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

code-recipes.png

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

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

หากคุณมีกรณีการใช้งานทั่วไปที่ต้องการดูสูตร โปรดยื่นคำขอสูตร 

สรุป

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

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

สัปดาห์สปอตไลต์ของ Nav3 จะเริ่มในวันที่ 1 ธ.ค. 2025 


และเช่นเคย หากพบปัญหาใดๆ โปรดรายงานที่นี่ 

เขียนโดย

อ่านต่อ