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

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

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

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

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

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

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

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

nav-display.png

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

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

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

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

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

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

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

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

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

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

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

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

สูตรการไปยังส่วนต่างๆ ที่น่าสนใจสำหรับสถานการณ์ที่พบได้ทั่วไป

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

code-recipes.png

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

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

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

สรุป

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

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

สัปดาห์ Nav3 Spotlight จะเริ่มในวันที่ 1 ธันวาคม 2025 


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

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