ฉันยังคงตัดหัวของฉันรอบเทคนิครัฐจัดการในกระพือและกำลังบิตสับสนเกี่ยวกับเวลาและเหตุผลที่จะใช้กับProvider.of<X> Consumer<X>ฉันเข้าใจ (ฉันคิดว่า) จากเอกสารที่เมื่อเลือกระหว่างสองสิ่งนี้คุณจะใช้ Provider.of เมื่อเราต้องการเข้าถึงข้อมูล แต่คุณไม่จำเป็นต้องเปลี่ยน UI ดังนั้นต่อไปนี้ (นำมาจากเอกสาร) จะสามารถเข้าถึงข้อมูลและอัปเดต UI ในกิจกรรมใหม่:
return HumongousWidget(
// ...
child: AnotherMonstrousWidget(// <- This widget will rebuild on new data events
// ...
child: Consumer<CartModel>(
builder: (context, cart, child) {
return Text('Total price: ${cart.totalPrice}');
},
),
),
);
ในขณะที่เราต้องการเพียงข้อมูลที่ไม่ต้องการสร้างใหม่ด้วย UI เราจะใช้Provider.of<X>กับlistenพารามิเตอร์ที่ตั้งค่าfalseดังต่อไปนี้:
Provider.of<CartModel>(context, listen: false).add(item); \\Widget won't rebuild
อย่างไรก็ตามlistenไม่จำเป็นต้องใช้และสิ่งต่อไปนี้จะทำงานด้วย:
Provider.of<CartModel>(context).add(item); \\listener optional
ดังนั้นสิ่งนี้ทำให้ฉันมีคำถามสองสามข้อ:
- นี่คือวิธีที่ถูกต้องที่จะแยกแยะและ
Provider.of<X>Consumer<X>อดีตไม่อัปเดต UI ผู้ใช้รุ่นหลังทำ - หาก
listenไม่ได้ตั้งค่าfalseเป็นเครื่องมือจะถูกสร้างใหม่ตามค่าเริ่มต้นหรือไม่สร้างใหม่ ถ้าlistenตั้งไว้เป็นtrueอะไร - ทำไมมี
Provider.ofตัวเลือกในการสร้าง UI ทั้งหมดเมื่อเรามีConsumer?