Flutter 采坑Dialog中Dialog 返回值問(wèn)題

在Dialog A中再?gòu)棾鲆粋€(gè)Dialog B ,獲得B中的值 去修改A界面上數(shù)據(jù)


圖1

如圖:點(diǎn)擊圖片中日期 ,彈出選擇日期組件


圖2

點(diǎn)擊確定按鈕 圖1 中的日期,通過(guò)
setState(() {
      dateStr =
      '${date.year}/${date.month}/${date.day}';
});

修改是失敗的,正確姿勢(shì):

  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('確定')),
              ],
            );
          });
        });

重點(diǎn):StatefulBuilder 、 刷新方法state()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容