gpt4 book ai didi

file - flutter 。文件 existsSync() 总是返回 false

转载 作者:IT王子 更新时间:2023-10-29 07:00:02 27 4
gpt4 key购买 nike

这就是我现在面临的问题。我有一个名为“assets”的文件夹,在该文件夹中我有一个名为“no_icon.png”的图像。我已将其添加到 pubspec.yaml 中,如下所示:

flutter:
assets:
- assets/teamShields/
- assets/no_icon.png

当我在 StatelessWidget 中做的时候

final imageP = File('assets/no_icon.png');

然后在这个里面和一个 MaterialApp:

body: Text(imageP.existsSync().toString()),

我总是在屏幕上看到 false。

此外,如果我输入 Image.asset('assets/no_icon.png'), 而不是 Text,我可以看到呈现的图像。

我不知道这是一个错误还是我做错了什么......

最佳答案

您应该使用 Flutter 的 Assets 支持,而不是使用文件。它旨在处理您在 pubspec 文件中声明的任何 Assets 。

如果从有状态/无状态小部件中使用,它看起来像这样:

Future<ByteData> loadFile(context) async {
AssetBundle bundle = DefaultAssetBundle.of(context).bundle;
try {
return await bundle.load("path/to.file");
} catch (e) {
print("Failed to load file because of $e");
return null;
}
}

您可以从任何有意义的地方调用它,例如 initState 或 FutureBuilder。或者您可以使用:

import 'package:flutter/services.dart' show rootBundle;

...

Future<ByteData> loadAsset() async {
return await rootBundle.load('assets/some.file');
}

但是,您似乎正在尝试加载存在特殊情况的图像文件。

来自 the docs :

Widget build(BuildContext context) {
// ...
return DecoratedBox(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('graphics/background.png'),
// ...
),
// ...
),
);
// ...
}

您需要做的就是使用 AssetImage =)。

关于file - flutter 。文件 existsSync() 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52653032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com