小编Moj*_*iee的帖子

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

我想知道在创建数据时,将数据传递给有状态小部件的最佳/最佳性能是什么.

我见过的两种风格是:

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

这种方法保持的值都在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"; …
Run Code Online (Sandbox Code Playgroud)

dart flutter

66
推荐指数
5
解决办法
3万
查看次数

颤振-页面之间的持久状态

我正在尝试在页面更改期间存储一些状态。因此,当重新加载页面时,旧的数据值可用。

我一直在研究PageStorage,但还没有弄清楚它是如何工作的。

我正在使用写入存储,PageStorage.of(context)?.writeState(context, 'Some text is here', identifier: ValueKey('test'));然后使用“后退”按钮卸载页面。

当我重新加载页面(带有Navigator.of(context).push())时,使用PageStorage.of(context)?.readState(context, identifier: ValueKey('test'));just给我null;

这是我写的一个简短示例,以演示如何使用它。有人知道我在做什么错吗?

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget {
  @override
  MyAppState createState() {
    return new MyAppState();
  }
}

class MyAppState extends State<MyApp> {
  final PageStorageBucket _bucket = new PageStorageBucket();
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: PageStorage(
        child: new MyHomePage(),
        bucket: _bucket,
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);
  @override
  _MyHomePageState …
Run Code Online (Sandbox Code Playgroud)

flutter

2
推荐指数
1
解决办法
4224
查看次数

标签 统计

flutter ×2

dart ×1