美文网首页
flutter 子页面 initState 只能初始化一次

flutter 子页面 initState 只能初始化一次

作者: 小星星吃KFC | 来源:发表于2020-09-03 20:26 被阅读0次

在父页面 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),
      ],
    );
  }
}

相关文章

网友评论

      本文标题:flutter 子页面 initState 只能初始化一次

      本文链接:https://www.haomeiwen.com/subject/ebwosktx.html