【发布时间】:2019-08-29 08:08:34
【问题描述】:
我想知道在创建状态小部件时将数据传递给有状态小部件的推荐方法是什么。
我见过的两种风格是:
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); -
这个问题之前有人问过:stackoverflow.com/questions/50428708/…
-
这个答案在这个答案之前一个月添加:stackoverflow.com/questions/50428708/…
标签: flutter dart statefulwidget pass-data