我想知道在创建数据时,将数据传递给有状态小部件的最佳/最佳性能是什么.
我见过的两种风格是:
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) 我正在尝试在页面更改期间存储一些状态。因此,当重新加载页面时,旧的数据值可用。
我一直在研究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)