More
วิธีการใช้การจัดการข้อมูลใน Flutter โดยใช้ List.generate ร่วมกับ Back4app
10 นาที
บทนำ ใน flutter วิธีที่ง่ายที่สุดในการสร้างรายการแบบไดนามิกคือการใช้ list generate ซึ่งช่วยได้โดยเฉพาะเมื่อจัดการกับข้อมูลที่ดึงมาจากบริการด้านหลังเช่น back4app ไม่ว่าจะเป็นองค์ประกอบ ui แบบไดนามิก การจัดการข้อมูลหลายรายการ หรือการเพิ่มประสิทธิภาพการร้องขอเครือข่าย list generate จะช่วยให้โค้ดของคุณง่ายขึ้นและเพิ่มประสิทธิภาพ ในบทแนะนำนี้ เราจะดูวิธีการจัดการข้อมูลด้านหลังอย่างมีประสิทธิภาพโดยใช้ list generate ใน flutter ในตัวอย่างนี้ คุณจะเห็นวิธีการสร้างแอปพลิเคชัน flutter ที่เรียบง่ายด้วย back4app เพื่อดึงและแสดงรีวิวของผู้ใช้แบบไดนามิก โดยให้คะแนนในกระบวนการนี้ คุณจะได้เรียนรู้เกี่ยวกับการประมวลผลข้อมูลด้านหลัง การเพิ่มประสิทธิภาพการร้องขอเครือข่าย และการดำเนินการแบบกลุ่มด้วย list generate ข้อกำหนดเบื้องต้น ในการทำบทแนะนำนี้ให้เสร็จสมบูรณ์ คุณจะต้องมี บัญชี back4app ลงทะเบียนสำหรับบัญชีฟรีที่ back4app com https //www back4app com ตั้งค่าสภาพแวดล้อมการพัฒนา flutter บนเครื่องของคุณ หากคุณยังไม่ได้ตั้งค่าให้ทำตาม คู่มือการติดตั้ง flutter https //flutter dev/docs/get started/install ความรู้พื้นฐานเกี่ยวกับ dart, วิดเจ็ต flutter และการเขียนโปรแกรมแบบอะซิงโครนัส ขั้นตอนที่ 1 – การตั้งค่าพื้นหลัง back4app ของคุณ สร้างโปรเจกต์ back4app เข้าสู่ระบบบัญชี back4app https //dashboard back4app com/ และสร้างโปรเจกต์ใหม่ สร้างคลาส parse ในโปรเจกต์ back4app ของคุณ สร้างคลาส parse ใหม่ชื่อ review คลาสนี้จะเก็บรีวิวของผู้ใช้สำหรับรายการต่างๆ (เช่น ผลิตภัณฑ์, ภาพยนตร์, ฯลฯ) เพิ่มฟิลด์ต่อไปนี้ ชื่อผู้ใช้ (string) ชื่อของผู้ใช้ที่ส่งรีวิว คะแนน (number) คะแนนที่ผู้ใช้ให้ โดยทั่วไปจะเป็นค่าระหว่าง 1 ถึง 5 ความคิดเห็น (string) ข้อความรีวิวหรือความคิดเห็น เพิ่มข้อมูลตัวอย่าง เติมข้อมูลในคลาส review ด้วยข้อมูลตัวอย่างเพื่อใช้ในแอป flutter ของคุณ รับข้อมูลประจำตัว back4app ของคุณ ไปที่การตั้งค่าโปรเจกต์ของคุณเพื่อดึง application id และ client key ซึ่งคุณจะต้องใช้เชื่อมต่อแอป flutter ของคุณกับ back4app ขั้นตอนที่ 2 – การตั้งค่าโปรเจกต์ flutter ของคุณ สร้างโปรเจกต์ flutter ใหม่ เปิดเทอร์มินัลหรือพรอมต์คำสั่งของคุณและรัน เพิ่ม dependencies เปิด pubspec yaml และเพิ่ม dependencies ต่อไปนี้ เริ่มต้น parse ในแอปของคุณ ใน lib/main dart , นำเข้า parse sdk และเริ่มต้นใน main ฟังก์ชัน import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( home reviewscreen(), ); } } แทนที่ 'your back4app app id' และ 'your back4app client key' ด้วยข้อมูลรับรอง back4app ที่แท้จริงของคุณ ขั้นตอนที่ 3 – ดึงและแสดงข้อมูลโดยใช้ list generate สร้าง widget reviewscreen ใน lib/main dart , เพิ่ม widget ใหม่ที่จะดึงรีวิวจาก back4app และแสดงผลโดยใช้ list generate class reviewscreen extends statefulwidget { @override reviewscreenstate createstate() => reviewscreenstate(); } class reviewscreenstate extends state\<reviewscreen> { list\<parseobject>? reviews; @override void initstate() { super initstate(); fetchreviews(); } future\<void> fetchreviews() async { final query = querybuilder\<parseobject>(parseobject('review')); final response = await query query(); if (response success && response results != null) { setstate(() { reviews = response results as list\<parseobject>; }); } } @override widget build(buildcontext context) { return scaffold( appbar appbar(title text('user reviews')), body reviews == null ? center(child circularprogressindicator()) listview\ builder( itemcount reviews! length, itembuilder (context, index) { final review = reviews!\[index]; return reviewtile( username review\ get\<string>('username') ?? 'anonymous', rating review\ get\<int>('rating') ?? 0, comment review\ get\<string>('comment') ?? '', ); }, ), ); } } class reviewtile extends statelesswidget { final string username; final int rating; final string comment; reviewtile({required this username, required this rating, required this comment}); @override widget build(buildcontext context) { return card( margin edgeinsets symmetric(vertical 10, horizontal 15), child padding( padding const edgeinsets all(15 0), child column( crossaxisalignment crossaxisalignment start, children \[ text( username, style textstyle(fontweight fontweight bold), ), sizedbox(height 5), row( children list generate(5, (index) { return icon( index < rating ? icons star icons star border, color colors amber, ); }), ), sizedbox(height 10), text(comment), ], ), ), ); } } ในตัวอย่างนี้, reviewtile เป็น widget ที่กำหนดเองที่แสดงรีวิวของผู้ใช้ การให้คะแนนดาวถูกสร้างขึ้นแบบไดนามิกโดยใช้ list generate , สร้างแถวของไอคอนดาวตาม rating ที่ดึงมาจาก backend ขั้นตอนที่ 4 – การเพิ่มประสิทธิภาพการดึงข้อมูลด้วย list generate และ future wait ในกรณีที่คุณต้องการดึงข้อมูลจากหลายจุดสิ้นสุดของแบ็กเอนด์พร้อมกัน คุณสามารถใช้ list generate ร่วมกับ future wait เพื่อเพิ่มประสิทธิภาพในกระบวนการ การดึงข้อมูลหลายระเบียนที่เกี่ยวข้อง ลองนึกภาพว่าคุณมีคลาสอีกอันชื่อ product และคุณต้องการดึงรีวิวที่เกี่ยวข้องสำหรับผลิตภัณฑ์หลายรายการในครั้งเดียว คุณสามารถใช้ list generate เพื่อเริ่มการร้องขอเหล่านี้พร้อมกัน future\<void> fetchmultipleproductsreviews(list\<string> productids) async { list\<future\<list\<parseobject>>> requests = list generate(productids length, (index) { final query = querybuilder\<parseobject>(parseobject('review')) whereequalto('productid', productids\[index]); return query query() then((response) => response results as list\<parseobject>); }); list\<list\<parseobject>> allreviews = await future wait(requests); setstate(() { allproductreviews = allreviews; }); } วิธีนี้ช่วยลดเวลารอโดยรวมโดยการดึงข้อมูลสำหรับผลิตภัณฑ์ทั้งหมดพร้อมกัน ขั้นตอนที่ 5 – การดำเนินการแบบกลุ่มโดยใช้ list generate หากคุณต้องการดำเนินการอัปเดตหรือการลบแบบกลุ่มบนระเบียนหลายรายการที่ดึงมาจากแบ็กเอนด์ list generate สามารถทำให้กระบวนการง่ายขึ้น ตัวอย่างการอัปเดตแบบกลุ่ม นี่คือวิธีที่คุณอาจอัปเดตสถานะของระเบียนหลายรายการในครั้งเดียว future\<void> updatemultiplereviews(list\<string> reviewids, string newstatus) async { list\<future\<parseobject>> updaterequests = list generate(reviewids length, (index) { parseobject review = parseobject('review') objectid = reviewids\[index]; review\ set('status', newstatus); return review\ save(); }); await future wait(updaterequests); print('all reviews updated'); } การใช้ list generate ที่นี่ช่วยให้คุณสามารถดำเนินการกับจำนวนบันทึกจำนวนมากในครั้งเดียวได้อย่างมีประสิทธิภาพ ขั้นตอนที่ 6 – การทดสอบและรันแอปของคุณ รันแอปของคุณโดยใช้ flutter run คุณควรเห็นรายการรีวิวของผู้ใช้ โดยแต่ละรีวิวจะแสดงคะแนนดาวที่สร้างขึ้นแบบไดนามิกโดยใช้ list generate หากคุณได้ทำการดำเนินการแบบกลุ่มและตัวอย่างการดึงข้อมูลหลายรายการ ทดสอบสถานการณ์เหล่านั้นด้วยเพื่อให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้อง บทสรุป ในบทเรียนนี้ คุณได้เรียนรู้วิธีการใช้ list generate ใน flutter เพื่อจัดการและแสดงข้อมูลที่ดึงมาจากแบ็กเอนด์ เช่น back4app ได้อย่างมีประสิทธิภาพ โดยการใช้ list generate , คุณสามารถสร้างองค์ประกอบ ui แบบไดนามิก ปรับปรุงการดึงข้อมูล และดำเนินการแบบกลุ่มในวิธีที่สะอาดและสามารถบำรุงรักษาได้ วิธีการนี้ไม่เพียงแต่ช่วยปรับปรุงประสิทธิภาพของแอปของคุณ แต่ยังช่วยให้โค้ดของคุณมีระเบียบและจัดการได้ง่าย สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ back4app กับ flutter โปรดดูที่ เอกสาร back4app flutter https //www back4app com/docs/flutter/overview ขอให้สนุกกับการเขียนโค้ด!