首页 > 解决方案 > 在关闭之前保存对话框内容

问题描述

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

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

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

标签: sqliteflutter

解决方案


由于您没有共享任何代码 - 所以我分享了一个关于您打算做什么的最小示例。

可以使用 传递数据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'),
          )
        ],
      ),
    )));
  }
}

在此处输入图像描述


推荐阅读