วงจรชีวิตของรัฐ:
createState()
: เมื่อ Framework ได้รับคำสั่งให้สร้าง StatefulWidget กรอบงานจะเรียกcreateState()
ทันทีmounted
เป็นจริง: เมื่อcreateState
สร้างคลาสสถานะของคุณbuildContext
จะถูกกำหนดให้กับสถานะนั้นbuildContext
คือตำแหน่งในแผนผังวิดเจ็ตซึ่งวางวิดเจ็ตนี้ไว้อย่างง่ายเกินไป นี่เป็นคำอธิบายที่ยาวกว่า วิดเจ็ตทั้งหมดมีคุณสมบัติbool this.mounted
มันจะเป็นจริงเมื่อกำหนดbuildContext
เป็นข้อผิดพลาดในการเรียกsetState
เมื่อยกเลิกการต่อเชื่อมวิดเจ็ตinitState()
: นี่เป็นวิธีแรกที่ถูกเรียกเมื่อวิดเจ็ตถูกสร้างขึ้น (หลังจากตัวสร้างคลาสแน่นอน)initState
ถูกเรียกเพียงครั้งเดียวและเพียงครั้งเดียว ต้องโทรsuper.initState()
didChangeDependencies()
: เมธอดนี้จะถูกเรียกทันทีหลังinitState
ในครั้งแรกที่สร้างวิดเจ็ตbuild()
: วิธีการนี้ถูกเรียกบ่อยครั้ง จำเป็น และจะต้องส่งคืนวิดเจ็ตdidUpdateWidget(Widget oldWidget)
: หาก วิดเจ็ตหลักเปลี่ยนแปลง และต้อง สร้างวิดเจ็ตนี้ใหม่ (เนื่องจาก จำเป็นต้องให้ข้อมูลที่แตกต่างกัน) แต่มันถูกสร้างใหม่ด้วยruntimeType
เดียวกัน ดังนั้นเมธอดนี้จึงถูกเรียกว่า เนื่องจาก Flutter กำลังนำสถานะกลับมาใช้ใหม่ซึ่งมีอายุการใช้งานยาวนาน ในกรณีนี้ คุณอาจต้องการเริ่มต้นข้อมูลบางอย่างอีกครั้ง เช่นเดียวกับที่คุณทำในinitState
setState()
: วิธีการนี้มักเรียกจากเฟรมเวิร์กเองและจากนักพัฒนา ใช้เพื่อแจ้งกรอบงานว่าข้อมูลมีการเปลี่ยนแปลงdeactivate()
: ปิดใช้งานจะถูกเรียกเมื่อสถานะถูกลบออกจากแผนผัง แต่อาจถูกแทรกกลับเข้าไปใหม่ก่อนที่การเปลี่ยนแปลงเฟรมปัจจุบันจะเสร็จสิ้น วิธีการนี้มีอยู่โดยทั่วไปเนื่องจากวัตถุสถานะสามารถย้ายจากจุดหนึ่งในแผนผังไปยังอีกจุดหนึ่งได้dispose()
:dispose()
ถูกเรียกเมื่ออ็อบเจ็กต์ State ถูกลบออก ซึ่งเป็นแบบถาวร วิธีนี้เป็นที่ที่คุณควรยกเลิกการสมัครและยกเลิกภาพเคลื่อนไหว สตรีม ฯลฯ ทั้งหมดmounted
เป็นเท็จ: วัตถุสถานะไม่สามารถต่อเชื่อมใหม่ได้ และข้อผิดพลาดจะเกิดขึ้นหากเรียกใช้setState
วงจรชีวิตของแอปพลิเคชัน:
สถานะ ของคุณจำเป็นต้องขยาย WidgetsBindingObserver และมีวิธีการใช้งาน:
ขั้นตอนที่ 1: เพิ่มผู้สังเกตการณ์ในวงจรชีวิตโดยเพิ่มสิ่งนี้:
ขั้นตอนที่ 2: ลบผู้สังเกตการณ์:
ขั้นตอนที่ 3: ฟังสถานะการโทรกลับ:
- ไม่ใช้งาน — แอปพลิเคชันอยู่ในสถานะไม่ใช้งานและไม่ได้รับการป้อนข้อมูลจากผู้ใช้
- หยุดชั่วคราว — แอปพลิเคชันไม่ปรากฏแก่ผู้ใช้ในขณะนี้ ไม่ตอบสนองต่ออินพุตของผู้ใช้ และทำงานในเบื้องหลัง
- กลับมาทำงานต่อ — แอปพลิเคชันสามารถมองเห็นได้และตอบสนองต่ออินพุตของผู้ใช้
- แยกออก — เมื่อแอปพลิเคชันอยู่ในสถานะนี้ เอ็นจิ้นกำลังทำงานโดยไม่มีมุมมอง โดยอาจอยู่ในระหว่างดำเนินการแนบมุมมองเมื่อเครื่องยนต์เริ่มต้นครั้งแรก หรือหลังจากมุมมองถูกทำลายเนื่องจากการป๊อปอัปของเนวิเกเตอร์