Flutter 采坑Dialog中Dialog 返回值问题

在Dialog A中再弹出一个Dialog B ,获得B中的值 去修改A界面上数据

《Flutter 采坑Dialog中Dialog 返回值问题》 图1

如图:点击图片中日期 ,弹出选择日期组件

《Flutter 采坑Dialog中Dialog 返回值问题》 图2

点击确定按钮 图1 中的日期,通过

setState(() {
      dateStr =
      '${date.year}/${date.month}/${date.day}';
});

修改是失败的,正确姿势:

  showDialog(
        context: context,
        builder: (BuildContext context) {
          return StatefulBuilder(builder: (context, state) {
            return AlertDialog(
              content: Container(
                height: 160,
                child: Column(
                  children: <Widget>[
                    Text('你选中 :${v}'),
                    TextField(
                      decoration: InputDecoration(hintText: '金额'),
                    ),
                    TextField(
                      decoration: InputDecoration(hintText: '备注'),
                    ),
                    Container(
                      width: double.infinity,
                      margin: EdgeInsets.only(top: 12),
                      child: GestureDetector(
                        child: Container(
                          width: double.infinity,
                          child: Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: <Widget>[
                              Text('日期 :'),
                              Expanded(
                                flex: 1,
                                child: Text('${dateStr}'),
                              )
                            ],
                          ),
                        ),
                        onTap: () {
                          DatePicker.showDatePicker(context,
                              showTitleActions: true, onChanged: (date) {
                            print('变更:${date}');
                          }, onConfirm: (date) {
                            print('选择:${date}');
                            state(() {
                              dateStr =
                                  '${date.year}/${date.month}/${date.day}';
                            });
                          },
                              currentTime: DateTime.now(),
                              locale: LocaleType.zh);
                        },
                      ),
                    )
                  ],
                ),
              ),
              actions: <Widget>[
                FlatButton(
                    onPressed: () {
                      Navigator.of(context).pop('-1');
                      this.dateStr = '今天';
                    },
                    child: Text('取消')),
                FlatButton(
                    onPressed: () {
                      Navigator.of(context).pop('1');
                    },
                    child: Text('确定')),
              ],
            );
          });
        });

重点:StatefulBuilder 、 刷新方法state()

    原文作者:wasdzy111
    原文地址: https://www.jianshu.com/p/2dbce1dfe0f2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞