不使用构造函数将StatefulWidget数据传递给State类
我设法通过构造函数将Stateful类变量的值传递给State类,如下所示:
import 'package:flutter/material.dart';void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Demo',
home: MyHomePage('John', 'Morison'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage(this.fname, this.lname);
final String fname;
final String lname;
@override
_MyHomePageState createState() => _MyHomePageState(fname, lname);
}
class _MyHomePageState extends State<MyHomePage> {
_MyHomePageState(this.fname, this.lname);
final String fname;
final String lname;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('Hello $fname $lname'),
)
);
}
}
太奇怪了,因为有两个以上的变量,所以我不得不做很多工作。有没有更好的办法?
回答:
是的,有widget
:
从文档:
> /// The current configuration.> ///
> /// A [State] object's configuration is the corresponding
> [StatefulWidget]
> /// instance. This property is initialized by the framework before
> calling
> /// [initState]. If the parent updates this location in the tree to a
> new
> /// widget with the same [runtimeType] and [Widget.key] as the current
> /// configuration, the framework will update this property to refer to
> the new
> /// widget and then call [didUpdateWidget], passing the old
> configuration as
> /// an argument.
> T get widget => _widget;
> T _widget;
代码如下所示:
import 'package:flutter/material.dart'; void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Demo',
home: MyHomePage('John', 'Morison'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage(this.fname, this.lname);
final String fname;
final String lname;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('Hello ${widget.fname} ${widget.lname}'),
)
);
}
}
以上是 不使用构造函数将StatefulWidget数据传递给State类 的全部内容, 来源链接: utcz.com/qa/420136.html