美文网首页
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