长期倾听者,第一次来电者。我不是开发人员,而是试图为自己和一些同事制作一个有用的程序。该应用程序用于显示我保存在 firebase 上的 pdf,但我希望 UI 根据文件是否已下载而有所不同。 pdf 将显示在一张卡片上,可以选择在线查看或下载,而第二辆车可以选择查看、共享和删除。为此,我尝试在检查文件是否存在后使用 if else。但我真的不知道如何操纵设置状态来改变我的 isDownloaded 变量来改变状态。这是我正在使用的代码片段,我没有收到错误消息,除非进行硬编码,否则 isDownloaded 状态永远不会改变。 localPath 是本地文档目录的变量。 感谢您的帮助!
class RefCardType extends StatefulWidget {
const RefCardType(
{Key? key,
required this.urlPath,
required this.fileName,
required this.page,
required this.title,
required this.cardTitle,
required this.cardSubTitle})
: super(key: key);
final String urlPath;
final String fileName;
final int page;
final String title;
final String cardTitle;
final String cardSubTitle;
@override
_RefCardTypeState createState() => _RefCardTypeState();}
class _RefCardTypeState extends State<RefCardType> {
void checkFile() async {
File file = File('$localPath/${widget.fileName}');
if (await file.exists() == true) {
setState(() {
isDownloaded = true;
});
{
setState(() {
isDownloaded = false;
});
}
}
}
bool isDownloaded = true;
@override
Widget build(BuildContext context) {
if (isDownloaded == true) {
return refFileCard(context,
urlPath: widget.urlPath,
fileName: widget.fileName,
page: widget.page,
title: widget.title,
cardTitle: widget.cardTitle,
cardSubTitle: widget.cardSubTitle);
} else {
return refUrlCard(context,
urlPath: widget.urlPath,
fileName: widget.fileName,
page: widget.page,
title: widget.title,
cardTitle: widget.cardTitle,
cardSubTitle: widget.cardSubTitle);
}
}
}