检查Flutter文件夹中是否存在图像

i2byvkas  于 2022-12-14  发布在  Flutter
关注(0)|答案(3)|浏览(331)

我已尝试在根项目中创建名为images的文件夹以及包含子映像(如assets/images)的assets文件夹
在按钮点击我想检查是否特定的图像文件存在于文件夹中。我已经尝试了两种方式

GestureDetector(
          onTap: () {
            shekitxva = examQuestionList[900].Question;
            // Check if the image exists
            if (File('assets/images/bg.png').existsSync()) {
              print('The image exists in the specified folder.');
            } else {
              print('The image does not exist in the specified folder.');
            }
            setState(() {});
          },
          child: const Text("გაზრდა"),
        ),

**文件('assets/images/bg.png').existsSync()两者都不文件('images/bg.png').existsSync()**似乎工作,因为我总是得到false

这是我的pubspec

flutter:    
uses-material-design: true

assets:
  - images/bg.png
  - assets/
  - assets/images/bg.png
ddrv8njm

ddrv8njm1#

检查图像是否存在的一种方法是

bool checkImage () {
   try {
      final bundle = DefaultAssetBundle.of(context);
      await bundle.load('assets/images/bg.png');
      AssetImage('assets/images/bg.png');
      return true; /// Exist
   } catch (e) {
        return false; //Not Exist
   )
}

source

iyfamqjs

iyfamqjs2#

您传递给档案建构函式的路径会在装置上寻找档案,而不是在项目目录中。
你在pubspec.yaml文件中列出的资产应该总是存在的,但是如果你想检查这个文件是否存在,可以使用rootBundle:

Future<bool> assetExists(String path) async {
  try {
    await rootBundle.loadString(path);
    return true;
  } catch (e) {
    return false;
  }
}
4nkexdtk

4nkexdtk3#

谢谢罗汉Jariwala
我修改了你的代码,让它工作

Future<bool> checkImage() async {
try {
  final bundle = DefaultAssetBundle.of(context);
  await bundle.load('assets/images/bg.png');
  AssetImage('assets/images/bg.png');
  return Future<bool>.value(true);

  /// Exist
} catch (e) {
  return Future<bool>.value(false);
}

}
然后调用函数

var value = await checkImage();
print(value);

相关问题