ฉันสงสัยว่าวิธีที่แนะนำในการส่งผ่านข้อมูลไปยังวิดเจ็ตที่มีสถานะเป็นอย่างไรในขณะที่สร้างมันคืออะไร
สองสไตล์ที่ฉันเคยเห็นคือ:
class ServerInfo extends StatefulWidget {
Server _server;
ServerInfo(Server server) {
this._server = server;
}
@override
State<StatefulWidget> createState() => new _ServerInfoState(_server);
}
class _ServerInfoState extends State<ServerInfo> {
Server _server;
_ServerInfoState(Server server) {
this._server = server;
}
}
วิธีนี้จะเก็บค่าทั้งในServerInfo
และ_ServerInfoState
ซึ่งดูเหมือนจะสิ้นเปลืองไปหน่อย
วิธีอื่นคือการใช้widget._server
:
class ServerInfo extends StatefulWidget {
Server _server;
ServerInfo(Server server) {
this._server = server;
}
@override
State<StatefulWidget> createState() => new _ServerInfoState();
}
class _ServerInfoState extends State<ServerInfo> {
@override
Widget build(BuildContext context) {
widget._server = "10"; // Do something we the server value
return null;
}
}
ดูเหมือนว่าจะย้อนกลับไปเล็กน้อยเนื่องจากสถานะไม่ได้ถูกเก็บไว้อีกต่อไป_ServerInfoSate
แต่จะอยู่ในวิดเจ็ตแทน
มีแนวทางปฏิบัติที่ดีที่สุดสำหรับสิ่งนี้หรือไม่?
ServerInfo(this._server);