วงจรชีวิตของรัฐ:

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

วงจรชีวิตของแอปพลิเคชัน:

สถานะ ของคุณจำเป็นต้องขยาย WidgetsBindingObserver และมีวิธีการใช้งาน:

ขั้นตอนที่ 1: เพิ่มผู้สังเกตการณ์ในวงจรชีวิตโดยเพิ่มสิ่งนี้:

ขั้นตอนที่ 2: ลบผู้สังเกตการณ์:

ขั้นตอนที่ 3: ฟังสถานะการโทรกลับ:

  • ไม่ใช้งาน — แอปพลิเคชันอยู่ในสถานะไม่ใช้งานและไม่ได้รับการป้อนข้อมูลจากผู้ใช้
  • หยุดชั่วคราว — แอปพลิเคชันไม่ปรากฏแก่ผู้ใช้ในขณะนี้ ไม่ตอบสนองต่ออินพุตของผู้ใช้ และทำงานในเบื้องหลัง
  • กลับมาทำงานต่อ — แอปพลิเคชันสามารถมองเห็นได้และตอบสนองต่ออินพุตของผู้ใช้
  • แยกออก — เมื่อแอปพลิเคชันอยู่ในสถานะนี้ เอ็นจิ้นกำลังทำงานโดยไม่มีมุมมอง โดยอาจอยู่ในระหว่างดำเนินการแนบมุมมองเมื่อเครื่องยนต์เริ่มต้นครั้งแรก หรือหลังจากมุมมองถูกทำลายเนื่องจากการป๊อปอัปของเนวิเกเตอร์