คำถามติดแท็ก flutter-widget


3
จะจัดการกับวิดเจ็ตที่ไม่ต้องการได้อย่างไร?
ด้วยเหตุผลหลายประการบางครั้งbuildเมธอดของวิดเจ็ตของฉันถูกเรียกอีกครั้ง ฉันรู้ว่ามันเกิดขึ้นเพราะผู้ปกครองอัปเดต แต่สิ่งนี้ทำให้เกิดผลกระทบที่ไม่ต้องการ สถานการณ์ทั่วไปที่ทำให้เกิดปัญหาคือเมื่อใช้FutureBuilderวิธีนี้: @override Widget build(BuildContext context) { return FutureBuilder( future: httpCall(), builder: (context, snapshot) { // create some layout here }, ); } ในตัวอย่างนี้หากจะเรียกใช้วิธีการสร้างอีกครั้งก็จะเรียกใช้คำขอ http อื่น ซึ่งไม่เป็นที่ต้องการ เมื่อพิจารณาถึงสิ่งนี้จะจัดการกับงานสร้างที่ไม่ต้องการได้อย่างไร? มีวิธีใดบ้างที่จะป้องกันการสร้างการโทร?

10
วิวพอร์ตแนวตั้งได้รับความสูงที่ไม่ถูกผูกไว้
นี่คือรหัสของฉัน: @override Widget build(BuildContext context) { return new Material( color: Colors.deepPurpleAccent, child: new Column( mainAxisAlignment: MainAxisAlignment.center, children:<Widget>[new GridView.count(crossAxisCount: _column,children: new List.generate(_row*_column, (index) { return new Center( child: new CellWidget() ); }),)] ) ); } ข้อยกเว้นดังนี้: I/flutter ( 9925): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════ I/flutter ( 9925): The following …

4
Flutter: จะใช้ Inherited Widget ได้อย่างไร?
วิธีที่ถูกต้องในการใช้ InheritedWidget คืออะไร? จนถึงตอนนี้ฉันเข้าใจแล้วว่ามันให้โอกาสคุณในการเผยแพร่ข้อมูลลงบนโครงสร้างวิดเจ็ต อย่างมากถ้าคุณใส่เป็น RootWidget มันจะสามารถเข้าถึงได้จากวิดเจ็ตทั้งหมดในแผนภูมิบนเส้นทางทั้งหมดซึ่งดีเพราะอย่างใดฉันต้องทำให้ ViewModel / Model ของฉันสามารถเข้าถึงได้สำหรับวิดเจ็ตของฉันโดยไม่ต้องหันไปใช้ globals หรือ Singletons แต่ InheritedWidget ไม่เปลี่ยนรูปฉันจะอัปเดตได้อย่างไร และที่สำคัญกว่านั้นวิดเจ็ตสถานะของฉันถูกกระตุ้นให้สร้างทรีย่อยของพวกมันขึ้นมาใหม่ได้อย่างไร น่าเสียดายที่เอกสารนี้ไม่ชัดเจนมากและหลังจากการพูดคุยกับหลายคนดูเหมือนจะไม่มีใครรู้ว่าวิธีการใช้ที่ถูกต้องคืออะไร ฉันเพิ่มคำพูดจาก Brian Egan: ใช่ฉันเห็นว่าเป็นวิธีการเผยแพร่ข้อมูลลงบนต้นไม้ สิ่งที่ฉันพบว่าสับสนจากเอกสาร API: "วิดเจ็ตที่สืบทอดมาเมื่ออ้างอิงด้วยวิธีนี้จะทำให้ผู้บริโภคสร้างใหม่เมื่อวิดเจ็ตที่สืบทอดมานั้นเปลี่ยนสถานะ" เมื่อฉันอ่านครั้งแรกฉันคิดว่า: ฉันสามารถยัดข้อมูลบางอย่างใน InheritedWidget และกลายพันธุ์ได้ในภายหลัง เมื่อการกลายพันธุ์นั้นเกิดขึ้นมันจะสร้างวิดเจ็ตทั้งหมดที่อ้างอิง InheritedWidget ของฉันสิ่งที่ฉันพบ: ในการเปลี่ยนสถานะของ InheritedWidget คุณต้องรวมไว้ใน StatefulWidget จากนั้นคุณจะกลายพันธุ์สถานะของ StatefulWidget และส่งข้อมูลนี้ไปยัง InheritedWidget ซึ่งส่งข้อมูลไปยังลูก ๆ ทั้งหมด อย่างไรก็ตามในกรณีนั้นดูเหมือนว่าจะสร้างต้นไม้ทั้งหมดใหม่ภายใต้ StatefulWidget ไม่ใช่แค่วิดเจ็ตที่อ้างอิงถึง InheritedWidget ถูกต้องหรือไม่ หรือจะรู้วิธีข้ามวิดเจ็ตที่อ้างอิง …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.