在关闭对话框之前保存对话框内容

时间:2019-03-09 00:33:23

标签: sqlite flutter

我正在创建一个包含项目列表的对话框,每个项目都包含一个可编辑的文本字段。

我想在对话框关闭时将已编辑文本字段的内容保存到SQLite数据库中。

我该怎么做?在Flutter中似乎没有onClose侦听器之类的东西,一旦关闭对话框,我将无法从文本字段中检索文本。

1 个答案:

答案 0 :(得分:1)

由于您尚未共享任何代码-因此,我仅分享您打算做的一个最小示例。

可以使用Navigator传递数据。

class DemoApp extends StatefulWidget {
  @override
  DemoAppState createState() {
    return new DemoAppState();
  }
}

class DemoAppState extends State<DemoApp> {
  String val = 'Empty';

  TextEditingController cntrl = TextEditingController();

  @override
  void dispose() {
    cntrl.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Container(
            child: Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Text('Value is -- $val'),
          RaisedButton(
            onPressed: () async {
              val = await showDialog(
                  context: context,
                  builder: (context) {
                    cntrl.clear();
                    return AlertDialog(
                      title: Text('Enter Value'),
                      content: TextField(
                        controller: cntrl,
                      ),
                      actions: <Widget>[
                        FlatButton(
                            onPressed: () {
                              Navigator.pop(context, cntrl.text);
                            },
                            child: Text('Save')),
                      ],
                    );
                  });
              setState(() {});
            },
            child: Text('Edit Value'),
          )
        ],
      ),
    )));
  }
}

enter image description here