android - 有没有办法从原生代码访问 Flutter 资源?
问题描述
我想在我的原生 Android 代码中使用来自 Flutter 资源的主徽标——例如,显示通知。如您所知,在 Android 中,您通常会从drawable
这样的文件夹中获取资源R.drawable.icon
。但随后我也必须将图标复制到 Android 可绘制文件夹。也许有一种方法可以从原生代码访问 Flutter 资源(读取 - 资产)?
解决方案
在颤振文档中有一个很好的部分。
给定一个资产“icons/heart.png”,用于android(从1.22开始):
FlutterLoader 加载器 = FlutterInjector.instance().flutterLoader();
字符串键 = loader.getLookupKeyForAsset("icons/heart.png");
对于 iOS(快速):
let key = registrar.lookupKey(forAsset: "icons/heart.png");
let path = Bundle.main.path(forResource: key, ofType: nil)
对于 iOS (obj-c):
NSString* key = [registrar lookupKeyForAsset:@"icons/heart.png"];
NSString* path = [[NSBundle mainBundle] pathForResource:key ofType:nil];
对于 Flutter 1.22 版之前的 android(已弃用):
AssetManagerassetManager = registrar.context().getAssets();
字符串键 = registrar.lookupKeyForAsset("icons/heart.png");
AssetFileDescriptor fd = assetsManager.openFd(key);
但是,您将无法直接将可绘制项目共享给颤振,并且主图标是您绝对不能与颤振共享的一种特殊情况。Flutter 不知道什么是“drawable”,而是以自己的跨平台方式处理资源。
推荐阅读
- java - 锁定/重试与异常流
- asp.net - 在 .Net 3.5 项目中使用 .Net 4.5 库
- ios - 从滚动视图中的视图触发操作
- html - 如何在顺风中正确溢出下拉列表?
- python - iPython/Iris 数据集:简单如何在一个绘图上组合 3 个不同的变量/视图(kmeans、随机 kmeans、PCA)进行比较?
- web-push - 是否可以将网络推送消息从一个浏览器发送到另一个浏览器?
- gulp - Gulp 不会在 https://app.netlify.com/ 上创建 dist 文件夹
- android - android 10中使用图像Uri的毕加索图像旋转问题
- android - 无障碍服务开启时如何显示弹窗讯息?
- json - 如何在 Ansible 中按顺序访问列表的所有元素