Flutter: Lazy loading แค่ไถก็ไหลเพิ่ม
Lazy loading เป็นเทคนิคหนึ่งในการทำแอฟของเราแสดงผลได้ไวขึ้น (แค่ไถก้โหลดเพิ่ม) หลักการคือ แทนที่จะส่ง request ไปเรียกไฟล์ assets ทั้งหมดที่ใช้ในแอฟพร้อมกันตั้งแต่ตอนโหลด ก็เปลี่ยนเป็นการส่ง request ออกไปเมื่อ “จำเป็น” เท่านั้น
แล้วใน Flutter ทำได้ยังไง ไปดูกันเลยคับ
- เริ่มแรก สร้าง Flutter project standard ขึ้นมาก่อน
- จากนั้นให้ เรียกไปยังหน้าที่จะทำเป็น lazy_loading ในที่นี้สร้างไฟล์ชื่อว่า
lazying_loading.dart
โดยใน workshop นี้จะสร้าง ListTile() ขึ้นมาเป็น Widget ที่ return ออกมาจาก ListView.builder() และจะทำการสร้าง data ขึ้นใหม่เพิ่มใน List เรื่อยๆทีละ 10 ชุด เมื่อตรวจสอบเจอว่า ค่า double ที่ได้จากการ scroll down ลงมา มีค่าเท่ากับ ค่า double ของค่า maximum ของหน้าจอที่ได้ render ไปแล้ว
งงไหมคับ มาต่อข้อ 3 กันเลยละกันคับ เด๋วจะเห็นภาพเอง
3. สร้าง stateful ขึ้นมา + เพิ่ม explicit กับ method เข้าไปตามนี้
_scrollController.position.pixels หรือ_scrollController.position.maxScrollExtent คือ ค่า double ที่ได้จากการ scroll up นะคับ เราสามารถนำมาตรวจสอบว่ามีการ scroll มาจนสุดขอบ phone เมื่อค่าทั้งสองนี้มีค่าเท่ากัน
4. จากนั้นให้ระบุในส่วนของ ui ที่จะ build ดังนี้
5. ผลลัพธ์จะได้แบบนี้คับ
แล้วพบกันใหม่คับ
References:
https://www.youtube.com/watch?v=JaVjHDdoVOg&t=395s