บทความ
State Management ใน flutter ที่ใช้กัน
State Management หมายถึงการจัดการข้อมูลหรือสถานะของแอปพลิเคชันในแต่ละเวลา โดยสถานะหรือข้อมูลเหล่านี้อาจเปลี่ยนแปลงได้ตลอดเวลา เช่น ข้อมูลการเข้าสู่ระบบของผู้ใช้, การเปลี่ยนแปลงขนาดหน้าจอ, การเลือกภาษาในแอปพลิเคชัน เป็นต้น
การจัดการ state ในแอปพลิเคชันนั้นเป็นสิ่งที่สำคัญมาก เนื่องจากการเปลี่ยนแปลง state ต้องส่งผลต่อการแสดงผลและการทำงานของแอปพลิเคชัน โดยการจัดการ state นั้นสามารถทำได้หลายรูปแบบ แต่วิธีการที่ดีควรเป็นวิธีที่มีประสิทธิภาพและไม่ทำให้โค้ดมีความยุ่งเหยิง โดยมีหลักการคือการแยกส่วนของ state ออกจาก Widget และอยู่ใน layer เฉพาะ ที่จะช่วยให้เราสามารถจัดการ state ได้อย่างมีประสิทธิภาพและง่ายต่อการบำรุงรักษาโค้ดในอนาคตได้ง่ายขึ้น โดยมีเทคนิคหลักๆ ได้แก่ setState(), BLoC, Provider, Redux, GetX เป็นต้น
ใน Flutter มีวิธีการจัดการ state ของแอปพลิเคชันหลายวิธี ซึ่งแต่ละวิธีจะมีข้อดีและข้อเสียต่างกันไป ดังนี้
-
setState(): เป็นวิธีการจัดการ state ของ Flutter ที่ใช้งานได้ง่าย โดยการใช้ method setState ใน StatefulWidget ซึ่งจะทำให้ Widget ที่เกี่ยวข้องกับ state ที่เปลี่ยนแปลงนั้น rebuild ตามไปด้วย แต่วิธีนี้มีข้อเสียคือไม่สามารถจัดการ state ของแอปพลิเคชันได้ซับซ้อนมาก
-
BLoC (Business Logic Component): เป็นวิธีการจัดการ state ของ Flutter ที่ใช้แนวคิด Reactive Programming โดยใช้ library อย่างเช่น rxdart หรือ Stream ในการจัดการ state ของแอปพลิเคชัน วิธีนี้จะช่วยให้แยก logic และ UI ของแอปพลิเคชันออกจากกัน แต่วิธีนี้จะมีข้อเสียคือเขียน code ได้ซับซ้อนและยากต่อการเรียนรู้
-
Provider: เป็นวิธีการจัดการ state ของ Flutter ที่ใช้ library ของ Flutter อย่าง Provider ซึ่งจะช่วยให้การจัดการ state ของแอปพลิเคชันเป็นไปอย่างมีประสิทธิภาพ โดยวิธีนี้จะใช้งานได้ง่ายและเขียน code ได้สั้นแต่ก็มีข้อเสียคือไม่สามารถจัดการ state ของแอปพลิเคชันที่ซับซ้อนได้
-
Redux: เป็นวิธีการจัดการ state ของแอปพลิเคชันโดยใช้ library ของ Flutter อย่าง Redux ซึ่งจะช่วยให้การจัดการ state ของแอปพลิเคชันเป็นไปอย่างมีประสิทธิภาพ แต่วิธีนี้จะมีข้อเสียคือเขียน code ได้ซับซ้อนและยากต่อการเรียนรู้
-
GetX: เป็นวิธีการจัดการ state ของแอปพลิเคชันโดยใช้ library ของ Flutter อย่าง GetX ซึ่งจะช่วยให้การจัดการ state ของแอปพลิเคชันเป็นไปอย่างมีประสิทธิภาพ และเขียน code ได้สั้นแต่ก็มีความยืดหยุ่นสูง โดยวิธีนี้สามารถใช้งานร่วมกับ state management อื่นๆ ได้อีกด้วย
หนังสือพัฒนาตัวเอง
จุดเริ่มต้นที่ชัดเจน