Quickstarters
Feature Overview
How to Build a Backend for Flutter?
37 นาที
บทนำ ในบทเรียนนี้ คุณจะได้เรียนรู้ วิธีสร้างแบ็กเอนด์สำหรับ flutter โดยใช้ back4app ซึ่งเป็นแบ็กเอนด์ที่เชื่อถือได้และเป็นโอเพนซอร์ส (baas) เราจะพาคุณไปทำการรวมฟีเจอร์ที่สำคัญของ back4app—เช่น การจัดการฐานข้อมูล, ฟังก์ชันคลาวด์, restful apis, graphql apis, และการตรวจสอบผู้ใช้—เข้ากับโปรเจกต์ flutter ของคุณ คุณจะได้ค้นพบวิธีจัดการการอัปเดตแบบเรียลไทม์โดยใช้ live queries โดยการใช้เซิร์ฟเวอร์แบ็กเอนด์ที่ทรงพลังของ back4app คุณสามารถข้ามการตั้งค่าด้วยตนเองมากมายและมุ่งเน้นไปที่การสร้างแอป flutter ที่มีพลศาสตร์ คู่มือนี้จะแสดงให้ผู้พัฒนา flutter เห็นวิธีการตั้งค่าโครงสร้างแบ็กเอนด์ที่ปลอดภัย, ขยายได้, และแข็งแกร่งที่สื่อสารกับฝั่งลูกค้าได้อย่างราบรื่น เราจะเน้นถึงข้อดีของการให้ back4app จัดการงานที่หนัก—เช่น การโฮสต์, การตรวจสอบผู้ใช้, และตรรกะเซิร์ฟเวอร์—เพื่อให้คุณสามารถได้รับประโยชน์จากฟีเจอร์เช่น การปรับขนาดอัตโนมัติ, ความปลอดภัยขั้นสูง, และการบำรุงรักษาที่ง่ายขึ้น หากคุณมีโปรเจกต์ flutter และต้องการประหยัดเวลาหลายชั่วโมงในการตั้งค่าแบ็กเอนด์ นี่คือสถานที่ที่เหมาะสมในการเริ่มต้น เมื่อสิ้นสุดบทเรียนนี้ คุณจะเข้าใจประเภทของแบ็กเอนด์ที่คุณสามารถสร้างด้วย back4app และพร้อมที่จะขยายบริการแบ็กเอนด์ของคุณสำหรับแอปพลิเคชันที่พร้อมใช้งานในผลิตภัณฑ์หรือรวมฟังก์ชันที่ซับซ้อนมากขึ้น เช่น apis ภายนอกและการตรวจสอบผู้ใช้ขั้นสูง เริ่มกันเถอะ! ข้อกำหนดเบื้องต้น ในการทำตามบทเรียนนี้ คุณจะต้องมี บัญชี back4app และโครงการ back4app ใหม่ เริ่มต้นใช้งาน back4app https //www back4app com/docs/get started/new parse app หากคุณยังไม่มีบัญชี คุณสามารถสร้างบัญชีได้ฟรี ทำตามคำแนะนำข้างต้นเพื่อเตรียมโครงการของคุณ สภาพแวดล้อมการพัฒนา flutter พื้นฐาน ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งและตั้งค่า flutter sdk https //docs flutter dev/get started/install นอกจากนี้ให้ยืนยันว่าคุณมี ide (เช่น android studio หรือ vs code) ที่กำหนดค่าสำหรับ flutter สภาพแวดล้อมของ dart (ภาษาโปรแกรม) ปกติแล้วจะติดตั้งพร้อมกับ flutter ตรวจสอบให้แน่ใจว่าคุณสามารถ นำเข้าแพ็คเกจ dart ได้โดยไม่มีข้อผิดพลาด ความคุ้นเคยกับพื้นฐานของ flutter เอกสารอย่างเป็นทางการของ flutter https //docs flutter dev หากคุณเป็นมือใหม่ใน flutter ให้ตรวจสอบเอกสารอย่างเป็นทางการหรือบทเรียนสำหรับผู้เริ่มต้นก่อนเริ่ม ตรวจสอบให้แน่ใจว่าคุณมีข้อกำหนดเบื้องต้นทั้งหมดนี้อยู่ในที่ตั้ง การตั้งค่าโครงการ back4app ของคุณและการกำหนดค่าสภาพแวดล้อม flutter ในเครื่องของคุณจะช่วยให้คุณติดตามได้ง่ายขึ้น ขั้นตอนที่ 1 – สร้างโครงการใหม่บน back4app และเชื่อมต่อ สร้างโครงการใหม่ ขั้นตอนแรกในการสร้างแบ็กเอนด์ flutter ของคุณบน back4app คือการสร้างโครงการใหม่ หากคุณยังไม่ได้สร้าง ให้ทำตามขั้นตอนเหล่านี้ เข้าสู่ระบบบัญชี back4app ของคุณ คลิกที่ปุ่ม “new app” ในแดชบอร์ด back4app ของคุณ ตั้งชื่อแอปของคุณ (เช่น “flutter backend tutorial”) เมื่อโครงการถูกสร้างขึ้น คุณจะเห็นมันถูกแสดงในแดชบอร์ด back4app ของคุณ โครงการนี้จะเป็นพื้นฐานสำหรับการตั้งค่าด้านหลังทั้งหมดที่เราจะพูดคุยกัน ติดตั้งและเริ่มต้น parse sdk ในแอป flutter ของคุณ back4app ขึ้นอยู่กับ parse platform ในการจัดการข้อมูลของคุณ การอัปเดตแบบเรียลไทม์ การตรวจสอบสิทธิ์ผู้ใช้ และอื่นๆ เพื่อเชื่อมต่อโครงการ flutter ของคุณกับ back4app ให้ทำตามขั้นตอนเหล่านี้ เพิ่ม parse flutter sdk ลงในแอปของคุณ dependencies parse server sdk flutter ^4 0 0 นำเข้า แพ็คเกจ parse ใน main dart (หรือที่ใดก็ตามที่คุณเริ่มต้นแอปของคุณ) import 'package\ parse server sdk flutter/parse server sdk flutter dart'; import 'package\ flutter/material dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your application id'; const keyparseserverurl = 'https //parseapi back4app com'; const keyclientkey = 'your client key'; // initialize parse with debug set to true await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true, debug true, ); runapp(const myapp()); } class myapp extends statelesswidget { const myapp({key? key}) super(key key); @override widget build(buildcontext context) { return materialapp( title 'flutter + back4app example', theme themedata(primaryswatch colors blue), home const scaffold( body center( child text('hello from flutter + back4app!'), ), ), ); } } ในแดชบอร์ด back4app ของคุณ ให้ไปที่ security & keys เพื่อค้นหา application id , client key , และ parse server url แทนที่ตัวแทนที่อยู่ด้านบนด้วยข้อมูลประจำตัวของคุณเอง ด้วยการเริ่มต้นนี้ ทุกคำขอจากแอป flutter ของคุณจะถูกส่งไปยัง back4app ของคุณอย่างปลอดภัย โปรดจำไว้ว่าควรหลีกเลี่ยงการใช้ master key ในฝั่งลูกค้าของแอป flutter ของคุณ หากคุณต้องการ master key ให้เก็บไว้ที่เซิร์ฟเวอร์หรือในสภาพแวดล้อมที่ปลอดภัย ขั้นตอนที่ 2 – การตั้งค่าฐานข้อมูล การสร้างโมเดลข้อมูล เมื่อแอป flutter ของคุณเชื่อมต่อกับ back4app แล้ว คุณสามารถเริ่มออกแบบสคีมาฐานข้อมูลของคุณได้ คุณสามารถทำได้ด้วยตนเองจากแดชบอร์ด back4app ไปที่ส่วน “database” ในแดชบอร์ดของคุณ สร้างคลาสใหม่ (เช่น “todo”) และเพิ่มคอลัมน์ที่เกี่ยวข้อง (เช่น ชื่อ, เสร็จสมบูรณ์แล้ว) back4app ยังมี ai agent เพื่อช่วยในการสร้างสคีมาอัตโนมัติ เปิด ai agent จากแดชบอร์ดแอปของคุณหรือจากเมนู อธิบายโมเดลข้อมูลของคุณ ด้วยภาษาที่เข้าใจง่าย (เช่น “สร้างแอป todo ใหม่ด้วยสคีมาชั้นเรียนที่สมบูรณ์”) ให้ ai agent สร้างสคีมา ให้คุณ นี่ช่วยให้การตั้งค่าโครงสร้างข้อมูลเป็นไปอย่างราบรื่น หากคุณต้องการให้ฟิลด์ถูกสร้างโดยอัตโนมัติ คุณสามารถเริ่มบันทึกวัตถุจากแอปของคุณได้เลย—parse รองรับการสร้างสคีมาแบบทันที การสร้างโมเดลข้อมูลโดยใช้ ai agent หากคุณเลือกใช้ back4app ai agent เพียงแค่ให้คำอธิบายสั้น ๆ และมันจะสร้างหรือแนะนำสคีมาให้คุณ นี่เป็นวิธีที่ยอดเยี่ยมในการเร่งกระบวนการสร้างโมเดลข้อมูลเบื้องต้นของโปรเจกต์ flutter ของคุณ การอ่านและเขียนข้อมูลโดยใช้ flutter parse sdk ด้านล่างนี้เป็นตัวอย่างง่าย ๆ ที่แสดงวิธีการสร้างและดึงวัตถุโดยใช้ parse flutter sdk import 'package\ parse server sdk flutter/parse server sdk flutter dart'; future\<void> createtodoitem(string title, bool iscompleted) async { final todo = parseobject('todo') set('title', title) set('iscompleted', iscompleted); final response = await todo save(); if (response success && response result != null) { print('todo saved successfully ${response result}'); } else { print('error saving todo ${response error? message}'); } } future\<list\<parseobject>?> fetchtodos() async { final querybuilder\<parseobject> querytodo = querybuilder\<parseobject>(parseobject('todo')); final response = await querytodo query(); if (response success && response results != null) { print('fetched todo items ${response results}'); return response results as list\<parseobject>; } else { print('error fetching todos ${response error? message}'); return null; } } ด้วยสิ่งนี้ คุณสามารถโต้ตอบกับฐานข้อมูล back4app ของคุณโดยตรงจากแอป flutter ของคุณ เพียงเรียก createtodoitem('feed the cat', false) หรือ fetchtodos() เพื่อเขียนและอ่านข้อมูล การอ่านและเขียนข้อมูลโดยใช้ rest api หากคุณต้องการรวมเข้ากับบริการอื่น ๆ หรือชอบวิธีการที่เป็นแบบดั้งเดิมมากกว่า คุณยังสามารถใช้ rest api ของ back4app curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo การอ่านและเขียนข้อมูลโดยใช้ graphql api back4app ยังมี graphql endpoint mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } นี่ทำให้คุณมีความยืดหยุ่นในการสร้างวิธีการใด ๆ ที่เหมาะสมที่สุดสำหรับแอป flutter ของคุณ ทำงานกับ live queries back4app ให้บริการ live queries เพื่อให้คุณสามารถรับข้อมูลอัปเดตแบบเรียลไทม์ได้ เปิดใช้งาน live queries ในแดชบอร์ด back4app (การตั้งค่าเซิร์ฟเวอร์) และจากนั้นใช้ไคลเอนต์ parse livequery flutter import 'package\ parse server sdk flutter/parse server sdk flutter dart'; import 'package\ parse server sdk flutter/live query dart'; future\<void> subscribetotodos() async { final livequery = livequery(); final query = querybuilder\<parseobject>(parseobject('todo')); subscription subscription = await livequery client subscribe(query); subscription on(livequeryevent create, (value) { print('new todo created $value'); }); subscription on(livequeryevent update, (value) { print('todo updated $value'); }); subscription on(livequeryevent delete, (value) { print('todo deleted $value'); }); } ด้วยการสมัครสมาชิกนี้ คุณสามารถฟังการเปลี่ยนแปลงข้อมูลเมื่อมันเกิดขึ้น นี่เป็นสิ่งที่ยอดเยี่ยมสำหรับการสร้างแอปที่ทำงานร่วมกันซึ่งผู้ใช้หลายคนเห็นข้อมูลอัปเดตแบบสด เมื่อมีการเรียกใช้ hot reload การสมัครสมาชิกของคุณจะยังคงอยู่เว้นแต่แอปจะเริ่มใหม่ ขั้นตอนที่ 3 – การใช้ความปลอดภัยด้วย acls และ clps acls และ clps คืออะไร? back4app ใช้ acls (access control lists) และ clps (class level permissions) เพื่อจำกัดว่าใครสามารถอ่านหรือเขียนข้อมูลได้ทั้งในระดับวัตถุและระดับคลาส ชั้นนี้ช่วยให้ข้อมูลของคุณได้รับการป้องกันจากการเข้าถึงที่ไม่ได้รับอนุญาต การตั้งค่าการอนุญาตระดับคลาส ในแดชบอร์ด back4app ของคุณ ไปที่ database และเลือกคลาส (เช่น “todo”) ไปที่ class level permissions ตั้งค่าเริ่มต้น (เช่น ผู้ใช้ที่ได้รับการตรวจสอบเท่านั้นที่สามารถสร้างวัตถุใหม่) การกำหนดค่า acls ในโค้ด คุณยังสามารถใช้ acls ที่ระดับวัตถุจากโค้ด flutter import 'package\ parse server sdk flutter/parse server sdk flutter dart'; future\<void> createprivatetodo(parseuser owneruser, string title) async { final todo = parseobject('todo') set('title', title); final acl = parseacl(owner owneruser); acl setpublicreadaccess(allowed false); acl setpublicwriteaccess(allowed false); todo setacl(acl); final response = await todo save(); if (response success) { print('private todo saved '); } else { print('error ${response error? message}'); } } โดยการรวม clps และ acls คุณสามารถมั่นใจได้ว่ามีเพียงผู้ที่เหมาะสมหรือบทบาทที่สามารถเข้าถึงหรือแก้ไขข้อมูลเฉพาะได้ ขั้นตอนที่ 4 – การเขียนฟังก์ชัน cloud code ทำไมต้องใช้ cloud code? cloud code ช่วยให้คุณสามารถรันโลจิกฝั่งเซิร์ฟเวอร์โดยไม่ต้องตั้งค่าเซิร์ฟเวอร์แบ็คเอนด์ด้วยตนเอง นี่เหมาะสำหรับการตรวจสอบข้อมูล การรวมกับบริการภายนอก หรือการบังคับใช้กฎบางอย่างในบริการแบ็คเอนด์ของคุณ (baas) ฟังก์ชันตัวอย่าง นี่คือตัวอย่าง cloud function ที่คำนวณความยาวของข้อความ // main js in your cloud code parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); คุณสามารถปรับใช้โค้ดนี้ผ่าน back4app cli หรือในแดชบอร์ดของแอปของคุณภายใต้ cloud code การปรับใช้ การใช้ back4app cli b4a configure accountkey b4a deploy การใช้แดชบอร์ด ในแดชบอร์ดของแอปของคุณ ไปที่ cloud code > functions วางโค้ด javascript คลิก deploy การเรียกใช้ cloud code จาก flutter import 'package\ parse server sdk flutter/parse server sdk flutter dart'; future\<void> gettextlength(string text) async { final function = parsecloudfunction('calculatetextlength'); final params = \<string, dynamic>{'text' text}; final parseresponse result = await function execute(parameters params); if (result success && result result != null) { print('text length ${result result\['length']}'); } else { print('error calling cloud code ${result error? message}'); } } วิธีการที่ปลอดภัยนี้ช่วยให้โลจิกที่ละเอียดอ่อนยังคงอยู่บนเซิร์ฟเวอร์ ในขณะที่แอป flutter ของคุณเพียงแค่ทำการร้องขอ ขั้นตอนที่ 5 – การกำหนดค่าการตรวจสอบสิทธิ เปิดใช้งานการตรวจสอบสิทธิผู้ใช้ back4app ใช้ parse user คลาสในการจัดการการลงทะเบียนและการเข้าสู่ระบบของผู้ใช้ โดยค่าเริ่มต้น parse จะดูแลการเข้ารหัสรหัสผ่าน โทเค็นเซสชัน และการจัดเก็บข้อมูลอย่างปลอดภัย import 'package\ parse server sdk flutter/parse server sdk flutter dart'; future\<void> signupuser(string username, string password, string email) async { final user = parseuser(username, password, email); final response = await user signup(); if (response success) { print('user signed up successfully!'); } else { print('sign up error ${response error? message}'); } } future\<void> loginuser(string username, string password) async { final user = parseuser(username, password, null); final response = await user login(); if (response success) { print('user logged in ${response result}'); } else { print('login error ${response error? message}'); } } การเข้าสู่ระบบด้วยโซเชียล back4app รองรับการรวมเข้ากับ google, apple, facebook และอื่นๆ ผู้ให้บริการแต่ละรายมีวิธีการเฉพาะและอาจต้องการไลบรารีเพิ่มเติม (เช่น สำหรับการลงชื่อเข้าใช้ facebook หรือ google) คุณสามารถเรียกใช้ await parseuser loginwith('facebook', \<string, dynamic>{ 'id' 'user facebook id', 'access token' 'facebook access token', 'expiration date' 'date' }); ปรับพารามิเตอร์ตามเอกสารของผู้ให้บริการ ขั้นตอนที่ 6 – การจัดการการจัดเก็บไฟล์ การตั้งค่าการจัดเก็บไฟล์ คุณสามารถเก็บภาพ เอกสาร หรือไฟล์สื่ออื่น ๆ โดยใช้ parsefile back4app จะรักษาความปลอดภัยให้กับไฟล์เหล่านี้และให้ url สำหรับการเรียกคืน import 'dart\ io'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; import 'package\ image picker/image picker dart'; future\<void> uploadimage() async { final picker = imagepicker(); final xfile? pickedfile = await picker pickimage(source imagesource gallery); if (pickedfile == null) { print('no file selected '); return; } final parsefile = parsefile(file(pickedfile path)); final response = await parsefile save(); if (response success) { print('file saved ${parsefile url}'); } else { print('error uploading file ${response error? message}'); } } การพิจารณาด้านความปลอดภัย คุณสามารถกำหนดว่าใครมีสิทธิ์เข้าถึงไฟล์ (สาธารณะ ผู้ใช้ที่ผ่านการตรวจสอบ หรือจำกัด) โดยการรวมความปลอดภัยระดับไฟล์กับ acls ซึ่งจะทำให้ข้อมูลไฟล์ของคุณปลอดภัย ขั้นตอนที่ 7 – การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน ทำไมมันถึงสำคัญ การตรวจสอบอีเมลยืนยันว่าผู้ใช้เป็นเจ้าของที่อยู่อีเมลที่ให้มา ในขณะที่การรีเซ็ตรหัสผ่านช่วยเพิ่มประสบการณ์และความปลอดภัยของผู้ใช้ การกำหนดค่าดashboard ไปที่ การตั้งค่าอีเมล ของแอปของคุณในแดชบอร์ด back4app เปิดใช้งาน การตรวจสอบอีเมล และ การรีเซ็ตรหัสผ่าน กำหนดค่าเทมเพลตอีเมลหรือโดเมนที่กำหนดเองของคุณหากจำเป็น การตั้งค่าเหล่านี้ช่วยให้แอป flutter ของคุณจัดการการตรวจสอบความเป็นเจ้าของผู้ใช้และการกู้คืนรหัสผ่านโดยอัตโนมัติ การใช้งานใน flutter final user = parseuser('testuser', 'password123', 'test\@example com'); final signupresponse = await user signup(); if (signupresponse success) { // the user will receive a verification email } // for password reset final resetresponse = await parseuser requestpasswordreset('test\@example com'); if (resetresponse success) { print('reset email sent successfully!'); } ขั้นตอนที่ 8 – การกำหนดตารางงานด้วย cloud jobs cloud jobs คุณอาจต้องการกำหนดตารางงานที่เกิดซ้ำ (เช่น การทำความสะอาดข้อมูลเก่าหรือการส่งอีเมลเป็นระยะ ๆ) cloud jobs ช่วยให้คุณทำเช่นนั้นได้ // main js parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); ติดตั้งโค้ดนี้ จากนั้นไปที่ app settings > server settings > background jobs ในแดชบอร์ด back4app ของคุณเพื่อตั้งเวลา ขั้นตอนที่ 9 – การรวม webhooks webhooks คืออะไร? webhooks ช่วยให้แอป back4app ของคุณส่งคำขอ http ไปยังบริการภายนอกเมื่อเกิดเหตุการณ์บางอย่าง (เช่น การบันทึกวัตถุใหม่) ซึ่งเหมาะสำหรับการรวมเข้ากับเครื่องมือของบุคคลที่สาม ไปที่ more > webhooks ในแดชบอร์ด back4app ของคุณและ add webhook ตั้งค่าจุดสิ้นสุดและทริกเกอร์ของคุณ (เช่น “บันทึกใหม่ใน todo”) คุณยังสามารถกำหนดค่า webhooks ด้วยตนเองใน cloud code โดยการทำคำขอ http ในทริกเกอร์ beforesave หรือ aftersave ขั้นตอนที่ 10 – สำรวจแผงผู้ดูแล back4app จะหามันได้ที่ไหน แอป back4app admin app เป็นอินเทอร์เฟซที่ใช้งานง่ายที่ช่วยให้สมาชิกในทีมที่ไม่ใช่เทคนิคสามารถจัดการข้อมูล (การดำเนินการ crud, งานข้อมูล ฯลฯ) โดยไม่ต้องเปิด parse dashboard ไปที่ app dashboard > เพิ่มเติม > admin app คลิก เปิดใช้งาน admin app คุณจะสร้างผู้ใช้ผู้ดูแล เลือกซับโดเมน และเข้าสู่ระบบด้วยข้อมูลประจำตัวที่สร้างขึ้นใหม่ แอปผู้ดูแลช่วยในการตรวจสอบและแก้ไขข้อมูลอย่างรวดเร็ว บทสรุป ในบทแนะนำนี้ คุณได้เรียนรู้ วิธีสร้างแบ็กเอนด์สำหรับ flutter โดยใช้ back4app และ parse flutter sdk คุณได้สร้างคลาส เก็บข้อมูล กำหนดค่าการค้นหาแบบเรียลไทม์ ใช้ความปลอดภัยด้วย acls และ clps เขียน cloud functions กำหนดตารางเวลา รวมเว็บฮุก และสำรวจ back4app admin panel วิธีการนี้ช่วยเร่งการพัฒนาโดยให้คุณมุ่งเน้นไปที่ด้านลูกค้าของ flutter แทนการกำหนดค่าของเซิร์ฟเวอร์ที่ซับซ้อน สตริงสุดท้ายที่คุณมีตอนนี้คือแบ็กเอนด์ที่ทำงานได้และปลอดภัยซึ่งใช้ restful apis การตรวจสอบสิทธิ์ผู้ใช้ และการจัดการข้อมูลที่ง่าย คุณสามารถรวมฟีเจอร์ที่ซับซ้อนมากขึ้นได้ทุกเมื่อ—เช่น cloud functions เพิ่มเติม การเรียก api ภายนอก หรือบทบาทที่กำหนดเอง ขั้นตอนถัดไป เตรียมพร้อมสำหรับการผลิต ใช้การแคชขั้นสูง การวิเคราะห์ หรือการควบคุมการเข้าถึงตามบทบาท ขยายแอปของคุณ รวมบริการจากบุคคลที่สามหรือสร้าง cloud functions เพิ่มเติมสำหรับตรรกะธุรกิจเฉพาะ ปรึกษาเอกสารของ back4app สำรวจความปลอดภัยขั้นสูง การปรับแต่งประสิทธิภาพ การวิเคราะห์บันทึก และอื่นๆ เรียนรู้เพิ่มเติม ตรวจสอบบทแนะนำสำหรับแอปแชทสด บริการตามตำแหน่ง หรือโครงสร้างข้อมูลที่ซับซ้อนมากขึ้น รวมเข้ากับโปรเจกต์ flutter ของคุณสำหรับกรณีการใช้งานจริง โดยการปรับปรุงการตั้งค่านี้อย่างต่อเนื่อง คุณจะเปลี่ยนแอป flutter ของคุณให้เป็นโซลูชันที่ทรงพลังและปรับขนาดได้ซึ่งสร้างขึ้นบนบริการแบ็กเอนด์ที่แข็งแกร่ง ขอให้สนุกกับการเขียนโค้ด!