dart – 将数据传递给有状态的小部件

前端之家收集整理的这篇文章主要介绍了dart – 将数据传递给有状态的小部件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道在创建数据时,将数据传递给有状态小部件的最佳/最佳性能是什么.

我见过的两种风格是:

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

猜你在找的Flutter相关文章