在尝试加载数据之前,有什么方法可以检查 Flutter中 是否存在资产文件?
现在,我有以下内容:
String data;
try {
data = await rootBundle
.loadString('path/to/file.json');
} catch (Exception) {
print('file not found');
}
问题是,我必须检查文件1,如果没有退出,我必须检查后备文件(文件2),如果也不存在,我将加载第三个文件。
我完整的代码如下所示:
try{
//load file 1
} catch (..) {
//file 1 not found
//load file 2
} catch (...) {
//file 2 not found
//load file 3
}
在我看来,这很丑陋,但是我没有更好的主意…
AssetBundle
(由返回rootBundle
)通过不同的方式加载资产(本地文件,网络)的抽象方式,并且没有检查该资产是否存在的通用方法。
您可以轻松地包装您的加载代码,以使其变得不那么“丑陋”。
Future myLoadAsset(String path) async {
try {
return await rootBundle.loadString(path);
} catch(_) {
return null;
}
}
var assetPaths = ['file1path', 'file2path', 'file3path'];
var asset;
for(var assetPath in assetPaths) {
asset = await myLoadAsset(assetPath);
if(asset != null) {
break;
}
}
if(asset == null) {
throw "Asset and fallback assets couldn't be loaded";
}
问题内容: 有没有一种内置的方法来检查资源是否存在,或者我是否正在做类似以下的事情: 问题答案: 根据javadoc,您不需要尝试捕获:http : //developer.android.com/reference/android/content/res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String, %2
问题内容: 我有一个嵌入了数据库的桌面应用程序。当我执行程序时,我需要检查特定的表是否存在,如果不存在则创建它。 给我的数据库一个名为conn的Connection对象,我该如何检查呢? 问题答案: 您可以使用可用的元数据: 有关更多详细信息,请参见此处。还要注意JavaDoc中的注意事项。
问题内容: 我正在尝试检查$ _POST是否存在,如果存在,则在另一个字符串中打印它,如果不存在,则根本不打印。 像这样的东西: 任何帮助将是巨大的! 问题答案:
问题内容: 我正在尝试检查是否存在用户默认值,如下所示: 但是,无论对象还不存在,它将始终返回true是什么?这是检查存在的正确方法吗? 问题答案: 阿斯通有一个很好的答案。请参阅下面的Swift 3版本。
问题内容: 如果我具有流程的PID,则os.FindProcess是否足以测试该流程的存在?我的意思是,如果返回,我是否可以认为它已终止(或被杀死)? 编辑: 我刚刚写了一个包装函数(旧式bash流程测试)。这可以正常工作,但是如果有其他解决方案(使用go库完成),我仍然很高兴。 问题答案: 这是查看进程是否处于活动状态的传统的Unix方式-向其发送0信号(就像您对bash示例所做的一样)。 来自
问题内容: 检查cookie是否存在的好方法是什么? 条件: Cookie存在,如果 如果不存在Cookie, 问题答案: 您可以使用所需cookie的名称调用函数getCookie,然后检查其是否为null。
问题内容: 我具有以下数据库结构: 在我的项目永久链接页面上,我有一个“添加到收藏夹”按钮,可在其中插入新行 如果用户已经在收藏夹中将其替换为“从收藏夹中删除”按钮,我希望能够将其替换。 我无法弄清楚其背后的逻辑-是否需要检查其中是否存在具有当前用户ID和永久链接ID的行?这对我不起作用: 问题答案: 您可能想要这样的东西:
问题内容: 尝试检查我要读取的文件是否存在。 问题答案: 这是另一种方法: 包装的用途和功能: p_DirName in varchar2, – schema object name p_FileName in varchar2 ) return number is l_file_loc bfile; begin l_file_loc := bfilename(upper(p_DirName),