flutter - 如何将变量作为参数传递给小部件二,在那里修改它,并将修改后的值返回给小部件一,Flutter

标签 flutter dart widget

如何将变量作为参数传递给小部件二,在那里修改它,并将修改后的值返回给小部件一。 当我单击“更改它”按钮时,我需要更改变量的值,并且该更改会反射(reflect)在小部件一中。

class FirstWidget extends StatefulWidget {
  @override
  _FirstWidgetState createState() => _FirstWidgetState();
}
class FirstWidgetState extends State<FirstWidget> {
String c = 'start';
        @override
        Widget build(BuildContext context){
            return Container(
                child: SecondWidget(variable: c),
            );
        }
    }
    class SecondWidget extends StatefulWidget {
    String variable;
    SecondWidget({ this.variable });
  @override
  _SecondWidgetState createState() => _SecondWidgetState();
}
    class SecondWidgetState extends State<SecondWidget> {
        @override
        Widget build(BuildContext context){
            return Container(
                child: RaisedButton(child:Text('Change it'), onPressed: () {widget.variable = 'end';}),

            );
        }
    }

最佳答案

可以通过回调轻松实现它,这意味着您将一个函数传递给第二个小部件,然后单击按钮时调用该函数,这样您就可以在第一个小部件中修改您想要的任何内容。

像这样:

class FirstWidget extends StatefulWidget {
  @override
  _FirstWidgetState createState() => _FirstWidgetState();
}
class FirstWidgetState extends State<FirstWidget> {
String c = 'start';
        @override
        Widget build(BuildContext context){
            return Container(
                child: SecondWidget(variable: c, onChange: (newVal) {
                    setState(() {c = newVal;});
                 }),
            );
        }
    }
    class SecondWidget extends StatefulWidget {
    String variable;
    final onChange;

    SecondWidget({ this.variable, this.onChange });
  @override
  _SecondWidgetState createState() => _SecondWidgetState();
}
    class SecondWidgetState extends State<SecondWidget> {
        @override
        Widget build(BuildContext context){
            return Container(
                child: RaisedButton(child:Text('Change it'), onPressed: () {widget.onChange('end');}),

            );
        }
    }

关于flutter - 如何将变量作为参数传递给小部件二,在那里修改它,并将修改后的值返回给小部件一,Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68941466/

相关文章:

flutter - Flutter-无限容器

flutter - 警告对话框中垂直对齐的 FlatButtons?

flutter - 如何以编程方式打开键盘文本字段

android - 软键盘 "del"键在 Gallery 小部件的 EditText 中失败

json - 将 Firebase 实时数据库 json 响应从 _InternalLinkedHashMap<Object?, Object?> 转换为 Map<String,dynamic>

flutter - 如何循环运行动画

arrays - 如何从JSON传递List <dynamic>到List <MyModel>?

flutter - 更改 TextField flutter 的选定文本颜色

user-interface - 如何在 flutter 中有这样的圆形?

javascript - 使用 MouseOver 事件控制 dijit.MenuBar