Bri*_*ode 7 dart flutter flutter-getx
我正在尝试创建一个下载功能,将文件从 url 下载到手机存储中,并且我制作了一个小部件来显示下载是否开始,以及使用getx obs显示进度计数器
\nfinal ApiServiceController uController = Get.put(ApiServiceController());\n\ndownloading(String fileUrl, String fileName) async {\n Dio dio = Dio();\n fToast("Downloading... $fileName", pop);\n\n try {\n var dir = await downloadDirectory();\n uController.isDwd.value = true;\n\n await dio.download(fileUrl, "${dir.path}/$fileName",\n onReceiveProgress: (rec, total) {\n print("Rec: $rec , Total: $total");\n\n uController.dwdP.value = ((rec / total) * 100).toStringAsFixed(0) + "%";\n });\n fToast("Downloaded", pop);\n } catch (e) {\n print(e);\n }\n uController.isDwd.value = false;\n\n print("Download completed");\n }\nRun Code Online (Sandbox Code Playgroud)\n要显示的小部件
\nStack(children: [\n///.. Container widget here,\nObx(() {\n return uController.isDwd.value\n ? loading(context, uController.dwdP.value)\n : SizedBox(height: 0);\n })\n])\nRun Code Online (Sandbox Code Playgroud)\n但每当我单击下载按钮开始下载时,它就会抛出错误
\n\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 Exception caught by widgets library \xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\nThe following assertion was thrown building Obx(has builder, dirty, state: _ObxState#291e4):\nvisitChildElements() called during build.\n\nThe BuildContext.visitChildElements() method can't be called during build because the child list is still being updated at that point, so the children might not be constructed yet, or might be old children that are going to be replaced.\nThe relevant error-causing widget was\nObx\nRun Code Online (Sandbox Code Playgroud)\n并且错误会显示在屏幕上,直到下载完成。我看到使用这个可以修复它
\nWidgetsBinding.instance.addPostFrameCallback((_) {\n // executes after build\n});\nRun Code Online (Sandbox Code Playgroud)\n但我不知道在这种情况下如何使用它。请问有办法解决这个问题吗?如果您需要更多解释或信息,请告诉我
\n| 归档时间: |
|
| 查看次数: |
9807 次 |
| 最近记录: |