我想在我的原生 Android 代码中使用 Flutter 资源中的主徽标——例如,显示通知。如您所知,在 Android 中,您通常会从这样的drawable文件夹中获取资源R.drawable.icon。但是后来我也必须将图标复制到 Android drawable 文件夹中。也许有一种方法可以从本机代码访问 Flutter 资源(读取 - 资产)?
在颤振文档中有一个很好的部分关于这个。
给定一个资源“icons/heart.png”,对于 android(自 1.22 起):
FlutterLoader 加载器 = FlutterInjector.instance().flutterLoader();
String key = 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(已弃用):
AssetManager assetManager = registrar.context().getAssets();
String key = registrar.lookupKeyForAsset("icons/heart.png");
AssetFileDescriptor fd = assetManager.openFd(key);
但是,您将无法直接将可绘制项目共享给 flutter,并且主图标是一个特殊情况,您也绝对不能与 flutter 共享。Flutter 不知道“可绘制”是什么,而是以自己的跨平台方式处理资源。
小智 7
更新新版本
对于 flutter 版本 1.22 或更高版本,FlutterLoader只能通过FlutterInjector访问。
import io.flutter.FlutterInjector;
FlutterLoader loader = FlutterInjector.instance().flutterLoader();
String key = loader.getLookupKeyForAsset("assets_file_name");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2295 次 |
| 最近记录: |