dart – 将数据传递给有状态的小部件
发布时间:2020-12-14 14:55:58 所属栏目:百科 来源:网络整理
导读:我想知道在创建数据时,将数据传递给有状态小部件的最佳/最佳性能是什么. 我见过的两种风格是: class ServerInfo extends StatefulWidget { Server _server; ServerInfo(Server server) { this._server = server; } @override StateStatefulWidget createSta
我想知道在创建数据时,将数据传递给有状态小部件的最佳/最佳性能是什么.
我见过的两种风格是: 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.
您应该只使用this.widget.myField访问它们. 编辑构造函数不仅需要大量的手工操作;它没带任何东西.没有理由复制Widget的所有字段. 编辑: 这是一个例子 class MyStateful extends StatefulWidget { final String foo; const MyStateful({Key key,this.foo}): super(key: key); @override _MyStatefulState createState() => _MyStatefulState(); } class _MyStatefulState extends State<MyStateful> { @override Widget build(BuildContext context) { return Text(widget.foo); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |