首页 > 解决方案 > 有没有办法从原生代码访问 Flutter 资源?

问题描述

我想在我的原生 Android 代码中使用来自 Flutter 资源的主徽标——例如,显示通知。如您所知,在 Android 中,您通常会从drawable这样的文件夹中获取资源R.drawable.icon。但随后我也必须将图标复制到 Android 可绘制文件夹。也许有一种方法可以从原生代码访问 Flutter 资源(读取 - 资产)?

标签: androidflutter

解决方案


在颤振文档中有一个很好的部分。

给定一个资产“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”,而是以自己的跨平台方式处理资源。


推荐阅读