将数据传递给处于抖动状态的有状态小部件 [英] Passing Data to a Stateful Widget in Flutter
本文介绍了将数据传递给处于抖动状态的有状态小部件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道在创建有状态小工具时将数据传递给它的推荐方式是什么。
我看到的两种风格是:
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
中,而是存储在小工具中。
是否有此方面的最佳实践?
推荐答案
不要使用State
的构造函数向State
传递参数。
您只能使用this.widget.myField
访问参数。
编辑构造函数不仅需要大量手工工作,而且不会带来任何东西。没有理由复制Widget
的所有字段。
编辑:
举个例子:
class ServerIpText extends StatefulWidget {
final String serverIP;
const ServerIpText ({ Key? key, this.serverIP }): super(key: key);
@override
_ServerIpTextState createState() => _ServerIpTextState();
}
class _ServerIpTextState extends State<ServerIpText> {
@override
Widget build(BuildContext context) {
return Text(widget.serverIP);
}
}
class AnotherClass extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: ServerIpText(serverIP: "127.0.0.1")
);
}
}
这篇关于将数据传递给处于抖动状态的有状态小部件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文