如何在AlertDialog小部件中更新var?

问题描述

我需要更新AlertDialog内的var百分比,我知道您不能更新我在这里使用的showDialog()内的任何东西,因为它是在另一个Widget树中构建的,但是值得一提的是很有帮助。 提前致谢。 :)

更新

uploadTask侦听器重做该功能,直到像Navigator推送到另一个屏幕一样。

我的代码

Future storageupload() async {
      await checkInternet();
      try {
        if (controller == null) {
          dialog('Error','Please Provide A Video Name',() => {});
        } else {
          StorageReference ref = FirebaseStorage.instance
              .ref()
              .child("Khatma 1")
              .child("Videos")
              .child(controller.text != null ? controller.text : "");
          StorageUploadTask uploadTask = ref.putFile(
              File(Variables.lastVideoPath),StorageMetadata(contentType: 'video/mp4'));
          uploadTask.events.listen((event) {
            if (uploadTask.isComplete) {
              AwesomeDialog(
                context: context,headerAnimationLoop: false,dialogType: DialogType.SUCCES,animType: AnimType.BottOMSLIDE,title: 'Uploaded',desc: 'Your Video Was Successfully Uploaded !',btnOkOnPress: () => {print('success')},)..show();
            } else {
              setState(() {
                percentage = event.snapshot.bytesTransferred /
                    event.snapshot.totalByteCount *
                    100;
              });
            }
          });
          return showDialog(
            context: context,builder: (BuildContext context) {
              return AlertDialog(
                title: Text('Uploading'),content: Column(
                  children: [
                    Center(
                      child: Text('Uploading .... Please Be Patient'),),SizedBox(
                      height: height * 0.02,Text(percentage.toString()),],);
            },);
        }
      } catch (e) {
        print(e);
      }
    }

代码

return StatefulBuilder(
            builder: (BuildContext context,void function) => AlertDialog(
              title: Text('Uploading'),content: Column(
                children: [
                  Center(
                    child: Text('Uploading .... Please Be Patient'),SizedBox(
                    height: height * 0.02,);

解决方法

所有对话框都是StateLess小部件...。因此您不能调用setstate来更新其数据以显示在UI上。如果您想这样做,则可以将对话框包装在StatefullBuilder中。这将允许您调用setState。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...