首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >showCupertinoDialog未更新flutter setState

showCupertinoDialog未更新flutter setState
EN

Stack Overflow用户
提问于 2021-01-25 10:09:45
回答 3查看 456关注 0票数 1

setState在showCupertinoDialog中不起作用。当我获得异步数据时,我想要更新对话框内的进度条。SetState值已更新,并且成功调用了_progress,但对话框未更新。我正在使用statefulBuilder。

代码语言:javascript
运行
AI代码解释
复制
 showCupertinoDialog(
      context: context,
      builder: (BuildContext context) => CupertinoAlertDialog(
        title: Text("Preparing..."),
        content: StatefulBuilder(builder: (context, StateSetter setState) {
          print('ssetstatte');
          return UploadIndicator(_progress);
        }),
        actions: [
          CupertinoDialogAction(
            onPressed: () {
              Navigator.of(context).pop();
            },
            isDefaultAction: true,
            child: Text("Cancel"),
          ),
        ],
      ),
    ).whenComplete(() {});



_uploadTask.snapshotEvents.listen((event) {
     
      _progress =
          event.bytesTransferred.toDouble() / event.totalBytes.toDouble();
/*THIS IS NOT UPDATING DIALOG*/
      setState(() {
        _progress = double.parse((_progress * 100).toStringAsFixed(2));
       
      });
});
EN

回答 3

Stack Overflow用户

发布于 2021-01-25 10:18:12

使用StatefulBuilder来使用setState inside对话框,并仅更新其中的小部件。

代码语言:javascript
运行
AI代码解释
复制
 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"),
            ),
          ],
        );
      },
    );
  },
);
票数 0
EN

Stack Overflow用户

发布于 2021-01-25 10:20:58

当你更新你的状态时,你必须使用stfullWidget。首先确认一下,它到底是不是stfullWidget?如果不是,那么你应该使用stlessWidget的stfullWidget实例。

票数 0
EN

Stack Overflow用户

发布于 2021-01-25 11:06:26

当您的异步数据正在更新时,显示无状态widget statefull widget中的数据没有更新整个widget,使用无状态widget显示数据它立即更新状态,statefull widget设置该数据,而无状态widget呈现该数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65882656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档