程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 Flutter 中将变量传递给函数时 setState 不更新大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 Flutter 中将变量传递给函数时 setState 不更新?

开发过程中遇到在 Flutter 中将变量传递给函数时 setState 不更新的问题如何解决?下面主要结合日常开发的经验,给出你关于在 Flutter 中将变量传递给函数时 setState 不更新的解决方法建议,希望对你解决在 Flutter 中将变量传递给函数时 setState 不更新有所启发或帮助;

当我将变量传递给具有 setState 方法的函数时,它不会更新,当我直接从同一个函数调用该变量时,它工作正常,我不确定我在这里做错了什么:>

代码:

 _startfilePicker(Uint8List chosenfile,var color,IconData iconData) async {
inputElement uploadinput = fileUploadinputElement();
uploadinput.click();

uploadinput.onChange.Listen((E) {
  // read file content as dataURL
  final files = uploadinput.files;
  if (files.length == 1) {
    final file = files[0];
    fileReader reader = fileReader();

    reader.onLoadEnd.Listen((E) {
      setState(() {
        print("on load set state");
        chosenfile = reader.result;
        iconData = Icons.done;
        color = colors.green[500];
      });
    });

    reader.onError.Listen((fileEvent) {
      setState(() {
        print("error");
        //"Some Error occured while reading the file";
      });
    });

    reader.readAsArrayBuffer(filE);
  }
});

}

当我调用 _startfilePicker(attachmentOne,firstAttachmentcolor,firstAttachment) 时,变量不会在函数中调用的 setState 方法中更新,但是当我像这样直接在函数内部调用这些变量时:

reader.onLoadEnd.Listen((E) {
      setState(() {
        print("on load set state");
        attachmentOne = reader.result;
        firstAttachment = Icons.done;
        firstAttachmentcolor = colors.green[500];
      });
    });

用这个函数的按钮:

Elevatedbutton(
    child: Icon(iconda),onpressed: () => setState(() {
         _startfilePicker(chosenfile,color,iconda);
         }),style: buttonStyle(
           BACkgroundcolor:
           MaterialStateProperty.all<color>(color),),

任何见解将不胜感激。

注意:所有代码和变量都处于同一个类状态。

谢谢,

解决方法

试试这个。

_startFilePicker(Uint8List chosenFile,var color,IconData iconData) async {
InputElement uploadInput = FileUploadInputElement();
uploadInput.click();
uploadInput.onChange.listen((E) {
// read file content as dataURL
final files = uploadInput.files;
if (files.length == 1) {
final file = files[0];
FileReader reader = FileReader();
reader.onLoadEnd.listen((E) { 
    print("on load set state");
    chosenFile = reader.result;
    iconData = Icons.done;
    color = Colors.green[500];
 setState((){});
});

reader.onError.listen((fileEvent) { 
    print("error");
    //"Some Error occured while reading the file";      
});
reader.readAsArrayBuffer(filE);

} });

,
/Users/sergio/chromedriver

只需调用 renderr();

这应该会给你一个想法

大佬总结

以上是大佬教程为你收集整理的在 Flutter 中将变量传递给函数时 setState 不更新全部内容,希望文章能够帮你解决在 Flutter 中将变量传递给函数时 setState 不更新所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。