我有一个上传图像到服务器的功能。然而,小部件在上传图像时开始重建,并且在上传图像后不执行代码。
InkWell(
child: Icon(
Icons.camera,
size: 50,
color: Colors.red[400],
),
onTap: () {
_imageFile =
_picker.getImage(source: ImageSource.camera);
_imageFile.then((file) async {
if (file != null) {
fileName = file.path.toString();
var res = await Auth.uploadImage(file);
print("Response for image upload is : ");
print(res);
await setUserData();
}
});
},
)
这是控制台上打印语句的输出
I/flutter (10171): Calling build Method
I/Timeline(10171): Timeline: Activity_launch_request time:68831133
I/flutter (10171): Uploading image to server
I/flutter (10171): Calling build Method
I/flutter (10171): Image uploaded successfully
如上所述,没有执行任何其他代码,小部件已经重建了自身。我可能做错了什么?
匿名用户
这是因为当您使用_imageFile=_picker.getImage(来源:ImageSource.camera);
_imageFile结果将在未来出现,您的下一段代码将被执行。
您可以使用await
解决此问题:
onTap: () async {
_imageFile =
await _picker.getImage(source: ImageSource.camera);
if (_imageFile != null) {
fileName = file.path.toString();
var res = await Auth.uploadImage(file);
print("Response for image upload is : ");
print(res);
await setUserData();
}
},
或者继续使用,然后
稍作更改:
onTap: () {
_picker.getImage(source: ImageSource.camera)
.then((file) async {
if (file != null) {
fileName = file.path.toString();
var res = await Auth.uploadImage(file);
print("Response for image upload is : ");
print(res);
await setUserData();
}
});
},
请参阅关于wait的说明
\u imageFile=\u picker。getImage(来源:ImageSource.camera)
这是不对的,getImage
是一个异步
函数,所以需要等待它完成。
执行此操作-_imageFile=等待_picker.get图像(来源:ImageSource.camera);
如果你想使用,那么像这样做,
\u picker。getImage(来源:ImageSource.camera)。然后((图像)。。。你的代码…)
在下面的代码中。有两个倒计时(黄色和红色),当条件改变时,显示屏上显示的倒计时控件将改变,即从黄色切换到红色,反之亦然。 然而,当它切换时,倒计时变为“重新初始化”。例如,假设黄色的初始计时器为60秒,在滴答40秒后,它会下降到剩下20秒。此时,条件改变两次,例如5秒,因此倒数计时器切换为红色并返回黄色。不是从15秒开始计时,而是从60秒开始重新启动。如何防止小部件的这种“重新初始化”,并允许计时
目前我正在尝试颤振网页,我需要在颤振主频道工作。但是,后来我需要继续我的其他项目。在他们身上,我正在研究颤振稳定通道。 但是,每当我使用命令“flutter channel stable”或“fluter channel master”切换我的flutter通道时,它每次都会重新下载sdk和其他工具。 目前,我已经下载了稳定的颤振sdk和稳定的dart sdk。 我已将它们移动到“FlutterS
我一直在做一个倒计时程序,我想到了这个。 在最后的while循环中,如果里面没有print/println语句,倒计时代码就不会执行。为什么?不过,该程序与print语句配合得非常好。
Java/Selenium WebDriver/Firefox 页面上有一个文本“输入”字段。然后它下面有一个‘提交’按钮。加载页面时,输入字段和提交按钮都已启用。在输入字段中输入文本后,是否有一种方法让WebDriver在点击Submit按钮之前等待“x”秒,而不是立即点击它。
问题内容: 我是Java的新手,我只是在寻求一点帮助。 我试图创建一个程序,允许用户输入gui的名称和>>百货商店的位置。它允许这样做,但是程序不等待输入> details,它只是初始化Gui类,并简单地继续执行> processing,这是将输入Gui的细节添加到数组列表中。但是尚未输入> details,因此它正在创建一个空值,因为它已经向前跳了。 那么如何使它停止并等待直到输入值然后提交呢?
我很熟悉flutter中的无状态和有状态小部件,但我很好奇为什么我们不将有状态小部件定义为无状态小部件?为什么我们需要声明两个不同的类,一个用于createstate方法,一个用于实际的状态实现?