首页 > 解决方案 > Flutter 将状态数据传递给函数

问题描述

我正在尝试修改showDialog函数之外的状态。这是我现有的代码:

showDialog(
      context: context,
      builder: (context) {
        String contentText = "Content of Dialog";
        return StatefulBuilder(
          builder: (context, setState) {
            return AlertDialog(
              title: Text("Title of Dialog"),
              content: Text(contentText),
              actions: <Widget>[
                FlatButton(
                  onPressed: () => Navigator.pop(context),
                  child: Text("Cancel"),
                ),
                FlatButton(
                  onPressed: () {
                    setState(() {
                      contentText = "Changed Content of Dialog";
                    });
                  },
                  child: Text("Change"),
                ),
              ],
            );
          },
        );
      },
    );

我想从外部修改对话框中文本的状态。

所以而不是:

setState(() {
                      contentText = "Changed Content of Dialog";
                    });

在 StatefulBuilder 中,

我想重构并编写一个我称之为例如的函数

updateContent(){
   setState(() {
                          contentText = "Changed Content of Dialog";
                        });
}

但是我无法以这种方式更新文本。

标签: flutterflutter-layout

解决方案


我认为 contextText 变量声明处有问题。使其成为类变量

String contentText = "Content of Dialog";

_whereShowDialogTriggered()
{
showDialog(
      context: context,
      builder: (context) {
        //String contentText = "Content of Dialog";
        return StatefulBuilder(
...

推荐阅读