自定义Flutter资源变体(variant)
Flutter目前没有支持到像andrid一样自动获取对应环境的变体资源,代码区分多语言取图片资源麻烦且代码可读性不高,为此封装了一个简单的ImageProvider 用来自动匹配资源 。
先讲下用法规则 assets目录下面创建带多语言环境名的目录例如en_xxx
将英文的图片放在此目录下
使用Image控件的时候传入图片路径并且传入自定义的FitAssetImage
Image(image : FitAssetImage('assets/images/lucky_text_icon.png'),fit: BoxFit.fitWidth,width: constraints.biggest.width, )
用法规则和android开发使用基本一致
原理
Flutter的AssetBundle内部根据图片路径最后一节目录匹配n倍图这里我们继承AssetBundle根据ImageConfiguration.local去优先匹配带有locale文案的路径然后返回
核心代码
final SplayTreeMap<double, String> mapping = SplayTreeMap<double, String>();for (final String candidate in candidates){Uri url = Uri.parse(candidate);var path = url.pathSegments[url.pathSegments.length - 2];if(path.contains('${config.locale}')){mapping[_parseScale(candidate)] = candidate;}}if(mapping.isEmpty){for (final String candidate in candidates.reversed)if(!Uri.parse(candidate).pathSegments[Uri.parse(candidate).pathSegments.length - 2].contains('_'))mapping[_parseScale(candidate)] = candidate;}
时间原因 写的比较粗略 源码文件放在下方附件中 后面有时间补充对深色主题和sw的适配
自定义Flutter资源变体(variant)相关推荐
- 如何判断 变体variant/OleVariant 是否为空
value : OleVariant; value := wbCharge.OleObject.document.all.item('spwd',0); 如何判断 value 是否有值呢? 如上代码 ...
- SAP CRM Opportunity订单的文档流Document Flow的一些变体variant
Monday, February 1, 2016 2:42 PM 今天我测试Opportunity时发现:SAP Fiori处理doc history,是建立在这样一个前提下:source和targe ...
- 配置构建变体build.gradle的配置
google原文链接 https://developer.android.com/studio/build/build-variants.html#product-flavors 配置构建类型 您可以 ...
- Unity 变体探秘
起因:我们在打Bundle 的时候出现了同一个AB里面有相同文件名字的文件(虽然路径不同),具体报错如下: 14:22:18 Building AssetBundle failed because h ...
- [Unity2018.3新功能]Prefab嵌套和变体
本文节选自洪流学堂公众号专栏<郑洪智的Unity2018课>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 大智:"今天我们要学的内容是Prefab中全新的部分 ...
- 【ALM】行业方案-Polarion Variant 变体管理 - 选择、变化和决断
1. 引子 我们生活在连接和定制的梦幻世界,使用社交媒体维系人际关系,每天都依赖着无处不在的即时通讯与朋友和家人保持联系.在社会允许的范围内,我们行使自己的能力来定制我们的世界来满足特定的喜好.我们期 ...
- boost::test模块带有自定义初始化测试的静态库使用变体
boost::test模块带有自定义初始化测试的静态库使用变体 实现功能 C++实现代码 实现功能 boost::test模块带有自定义初始化测试的静态库使用变体 C++实现代码 #include & ...
- boost::test模块具有自定义初始化测试的共享库使用变体
boost::test模块具有自定义初始化测试的共享库使用变体 实现功能 C++实现代码 实现功能 boost::test模块具有自定义初始化测试的共享库使用变体 C++实现代码 #include & ...
- VARIANT变体类型数据
2019独角兽企业重金招聘Python工程师标准>>> 特殊 Variant 是一种特殊的数据类型,除了定长String数据及用户定义类型外,可以包含任何种类的数据.Variant ...
最新文章
- TVM Reduction降低算力
- rabbitmq怎样确认是否已经消费了消息_【朝夕专刊】RabbitMQ生产者/消费者消息确认...
- python中文读音ndarray-Python开发:NumPy学习(一)ndarray数组
- 【转】TFS签入签出规范
- springboot上传限制1M的大坑
- iloc,ix和loc有何不同?
- React - 修改children(下)
- 英雄无敌Ⅲ之游戏修改器DIY
- 桌面上计算机程序包能删吗,不小心卸载了windows驱动程序包(电脑上别乱清理了)...
- 检测数据库连接泄漏的最佳方法
- python输出到文件里
- CSS3 画的哆啦A梦
- Django开发微信公众号
- sql server远程连接时提示超时的解决办法
- 发票 税率 普票 增值税发票
- Java之父--Gosling
- PEP 8 -- Style Guide for Python Code。Python 代码规范。
- 如何将所有电子邮件地址合并到一个Outlook.com收件箱中
- 加息和提高存款准备金的影响
- 5G走向生活6G布局研发
热门文章
- JavaCV音视频开发宝典:rtsp拉流转码方式转推到rtmp
- 四线小城市程序员2020年终总结
- 5月全球浏览器排行榜:Chrome以58.09%的市场占有率稳居世界第一
- ssm毕设项目白酒营销管理gh21y(java+VUE+Mybatis+Maven+Mysql+sprnig)
- Ignored attempt to cancel a touchmove event with cancelable=false
- 3025这个数具有一种独特的性质:将它平分为二段,即30和25,使之相加后求平方,即(30+25)2,恰好等于3025本身。请求出具有这样性质的全部四位数
- PHP安装__GongWei1997
- 为什么说个人免签支付非常安全呢?
- android aidl编译,Android AIDL详解
- 计算机系统与手机系统,中国什么时候才有国产电脑系统和手机系统?