在父页面 setState 时候 子子页面 initState 不会被再次加载,不要在initState 中进行赋值,取值.
FlatButton(
child: Icon(
Icons.add,
color: Colors.red,
),
onPressed: () {
setState(() {
_name = Random().nextInt(100).toString();
_name2 = Random().nextInt(100).toString();
});
},
),
TextDemo(
name: _name,
name2: _name2,
),
class TextDemo extends StatefulWidget {
final String name;
final String name2;
TextDemo({this.name,this.name2});
@override
_TextDemoState createState() => _TextDemoState();
}
class _TextDemoState extends State<TextDemo> {
String _name;
String _name2;
@override
void initState() {
super.initState();
/// 在父页面 setState 时候 initState 不会被再次加载,所以 Text(_name), 不会被改变值
_name = widget.name;
}
@override
Widget build(BuildContext context) {
/// 在父页面 setState 时候,可以获得新数据
_name2 = widget.name2;
return Column(
children: [
/// 最好还是直接用 widget.name 取值
Text(widget.name),
Text(_name),
Text(_name2),
],
);
}
}
网友评论