首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setState不改变如何将StatefulWidget设置为StatefulWidget?

setState不改变如何将StatefulWidget设置为StatefulWidget?
EN

Stack Overflow用户
提问于 2019-02-13 14:57:45
回答 1查看 64关注 0票数 1

StatefulWidget to StatefulWidget如何在类Test2 setstate中更改字符串TimeSetdata

代码语言:javascript
复制
   class Test1 extends StatefulWidget {
      @override
      _Test1State createState() => _Test1State();
    }

    class _Test1State extends State<Test1> {
      String TimeSetdata = "9.00 AM";
      @override
      Widget build(BuildContext context) {
       ...
       Text(TimeSetdata);
      }
    }
    class Test2 extends StatefulWidget {
      @override
      _Test2State createState() => _Test2State();
    }

    class _Test2State extends State<Test2> {
      @override
      Widget build(BuildContext context) {
        ...
        onPressed: () {
          setState(() {
            TimeSetdata = "11.00 AM";
          });
        };
      }
    }

如何在类setState中将Test2文本( TimeSetdata )中的字符串TimeSetdata更改为“11.00AM”;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-13 16:00:36

允许父函数将回调函数传递给子函数,并传递回调,当从子调用时,更新父函数中的值。

这假设Test2Test1的孩子(您在问题中没有明确说明这一点)。

代码语言:javascript
复制
typedef StringCallback = void Function(String);

class Test2 extends StatefulWidget {
  Test2({@required this.onPressed});

  final StringCallback onPressed;

  @override
  _Test2State createState() => _Test2State(onPressed: onPressed);
}

class _Test2State extends State<Test2> {
  _Test2State({@required this.onPressed});

  final StringCallback onPressed;

  @override
  Widget build(BuildContext context) {
    ...
    onPressed: () => onPressed(),
  }
}

class _Test1State extends State<Test1> {
  String TimeSetdata = "9.00 AM";
  @override
  Widget build(BuildContext context) {
   ...
   Test2(onPressed: (s) => setState(() => TimeSetdata = s),
   ...
   Text(TimeSetdata);
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54673132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档