使用颤振使用 if else 设置状态

时间:2021-06-27 22:44:57

标签: flutter if-statement setstate

长期倾听者,第一次来电者。我不是开发人员,而是试图为自己和一些同事制作一个有用的程序。该应用程序用于显示我保存在 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);
   }
  }
 }

0 个答案:

没有答案