这似乎是重复的,但我找不到我的问题的答案或解决方案。
在Flutter应用程序上有一个屏幕,我从手机的文件系统中选择一个文件(通过file_picker以异步方式)。
当我选择一个文件时,我想启用“下一步”按钮。 但是,我无法做到这一点。 我尝试使用布尔表达式和布尔函数,但没有成功,因为构建函数发生在用户选择文件之前(通过单击按钮以打开文件选择器)。
我尝试了几种解决方案:
onPressed: upload_flag ? () => myAction() : null,
但是在选择文件后更新标志时,它将不会启用它。
这是文件选择功能和检查功能的外观:
File _scanned_file = null;
bool upload_flag = false;
void isUploaded() {
if (_scanned_file != null) {
upload_flag = true;
}
else{
upload_flag = false;
}
}
Future<bool> chooseFile() async {
_scanned_file = await FilePicker.getFile(
type: FileType.custom,
allowedExtensions: ['jpg', 'pdf', 'png'],
);
isUploaded();
}
我尝试了许多不同的方法,但都没有成功。
任何提示和帮助都将非常有用! 谢谢大家!
答案 0 :(得分:4)
您尝试过setState吗?
void isUploaded() {
if (_scanned_file != null) {
setState(() {
upload_flag = true;
});
} else {
setState(() {
upload_flag = false;
});
}
}
答案 1 :(得分:1)
void isUploaded() {
if (_scanned_file != null) {
upload_flag = true;
}
upload_flag = false;
}
在这种方法中,即使在条件为true的情况下,即使将upload_flag
设置为false,也总是将其设置为false。另外,您需要调用setState()
才能使更改反映在UI中。需要更改为..
void isUploaded() {
setState(() {
if (_scanned_file != null) {
upload_flag = true;
} else {
upload_flag = false;
}
});
}