加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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);
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读