首页 > 其他分享 >Flutter跨插件访问assets资源

Flutter跨插件访问assets资源

时间:2025-01-17 10:22:53浏览次数:1  
标签:插件 assets val flutter source flutterAssets Flutter

1.现在常常以插件话和组件化开发移动端,我们在使用原生访问flutter的Assets资源时常常可以这样写

val flutterAssetStream = assetManager.open("flutter_assets/assets/my_flutter_asset.png")

但是如果是跨插件的话可能就不行了,比如一个主项目可能引入了好几个问呢-----》使用 AssetFileDescriptor

    
//assetPath的路径如:assets/my_flutter_asset.png?package=app
private fun assetSourceToBitmap(context: Context, assetPath: String,flutterAssets: FlutterPlugin.FlutterAssets): Bitmap? {
        var source: BufferedSource? = null
            try {
                val uri = Uri.parse(assetPath)
                val packageName = uri.getQueryParameter("package")
                val subPath = if (packageName.isNullOrBlank()) {
                    flutterAssets.getAssetFilePathBySubpath(uri.path.orEmpty())
                } else {
                    flutterAssets.getAssetFilePathBySubpath(uri.path.orEmpty(), packageName)
                }
                val internalSource = context.assets.openFd(subPath)
                source = internalSource.createInputStream().source().buffer()
                val array = source.readByteArray()
                return BitmapFactory.decodeByteArray(array,0,array.size)
            } catch (e: Exception) {
                println("logo-IOException")
                e.printStackTrace()
                byteArrayOf()
            }  finally {
                source?.close()
            }
        return null
    }
override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
  flutterAssets= flutterPluginBinding.flutterAssets 
}

 附:参考 https://pub.dev/packages/fluwx  的分享图片功能

标签:插件,assets,val,flutter,source,flutterAssets,Flutter
From: https://www.cnblogs.com/maowuge/p/18676392

相关文章

  • MyBatis缓存原理及插件实现
    目录MyBatis缓存原理缓存的工作机制一级缓存:二级缓存:MyBatis插件实现MyBatis缓存原理缓存的工作机制如果会话查询了一条数据,此数据会存入一级缓存;若会话被关闭或提交,则,其数据转存入二级缓存;新会话若再次查询之前查询过的数据,就从二级缓存中获取;不同的Mapper,查询出......
  • Flutter使用FractionallySizedBox组件报错Failed assertion: line 2164 pos 12: 'hasS
    这里从解决方法那里直接给出个有效的方式。就是如果你使用了FractionallySizedBox组件,第一是这个组件只能在固定宽高下或者Row,Flex,Column组件下使用。第二就是这个组件需要在Flexible下使用.结构就是:Row->Flexible->FractionallySizedBox给出简单的代码示例......
  • 告别会员!分享一款比洛雪音乐更好用的免费音乐软件,全平台支持,支持自定义插件,歌单同步等
    文章目录......
  • Flutter pubspec.yaml文件dependencies依赖git仓库代码,下载Could not find a file nam
    环境window10.ResolvingdependenciesCouldnotfindafilenamed"pubspec.yaml"inhttps://xxxxxxxx/flutter_login.git.需要保证你当前能通过正常的gitclone仓库url进行拉取代码。然后出现这个解析依赖失败的话,我们在终端处执行flutterpubget--verbose手动加载依......
  • cni插件 ipam cnitool
    https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/migrating-from-dockershim/troubleshooting-cni-plugin-related-errors/ /usr/sbin/ethtool-Kflannel.1tx-checksum-ip-genericoffhttps://github.com/flannel-io/flannel/blob/master/Documentation/trou......
  • SpringBoot 插件化开发模式
    一、前言unsetunset1.1使用插件的好处1.1.1模块解耦实现服务模块之间解耦的方式有很多,但是插件来说,其解耦的程度似乎更高,而且更灵活,可定制化、个性化更好。举例来说,代码中可以使用设计模式来选择使用哪种方式发送短信给下单完成的客户,问题是各个短信服务商并不一定能保证......
  • 【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优
    【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升章节内容【01】章节内容【01】vs-code配置flutter环境开发背景优雅草央千澈对本项目的描......
  • 盘点 GitHub 上可用的微信抢红包插件:原理、项目与安全建议
    快过年了,给大家盘点写好玩的,很多小伙伴应该需要的。我们首选github,GitHub作为全球最大的开源社区,自然也汇聚了不少微信抢红包相关的项目。本篇博客将盘点目前在GitHub上能够找到的部分微信抢红包插件或脚本,介绍其主要原理、使用门槛与风险,为有兴趣了解该领域的读者提供参考......
  • 如何在Eplan里面添加插件
    运行MicrosoftVisualStudio并新建一个C#类库项目,如下图所示http://s4/middle/9a1ad43agc08e09b3c0f3&690API开发之入门篇"TITLE="EPLAN API开发之入门篇"/>新建项目窗口上部选择.NET版本,并设置好项目名称和路径。重命名C#源文件名为“AddInModule.cs”,类名改名为“AddInM......
  • 浏览器表单自动填充插件推荐
    以下是一些开发测试中常用的浏览器表单自动填充插件推荐:Chrome浏览器插件Autofill功能特点:可针对单个网址设置自动填充规则,支持网页地址、个人信息、帐户登录、博客帖子模板和高级搜索表单等建立表单填充内容。通过用户在配置界面配置的网址、控件定位方式、控件类型、控件操作......