我想知道在创建有状态的小部件时传递数据的推荐方式是什么。
我见过的两种风格是:
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);
。 - Günter Zöchbauer