加载Flutter Assets中2倍图的一些细节

如果只有2倍图,放在了2.0x文件夹下,没有1倍图。

则在.yaml文件中,此图必须全名匹配才行。按目录匹配的话,就找不到图。

如果在.yaml文件中是按目录匹配图的,则1倍图和2倍图都必须的放到正确的倍数目录下。

个人理解是,如果按目录匹配图时,会先在assets根目录下找这张图,如果找不到,就不再找了。不会到2.0x目录中找了。

如果在ymal中图是精确匹配的写法的话,则assets的根目录和2倍图目录都会找。

示例:

目录:

assets

         |-2.0x-

         |            |-a.png

         |-a.png

如果图按上面的方式放在assets目录中,

则在yaml中如下配置:

flutter:

               assets:

                        - assets/

可以加载a.png图的。

如果assets目录中没有放1倍图,只在2.0x目录中放了图,如下:

assets

                |-2.0x-

                           | -a.png

则上面的yaml的写法就会找不到图,必须得精确匹配图:

flutter:

               assets:

                        - assets/a.png

### 如何在 Flutter 中解析 XML 文件 为了有效地解析 XML 文件,在 Flutter 项目中可以利用 `xml` 这一强大的第三方库。此库提供了多种功能用于创建、遍历和查询 XML 文档,极大地简化了解析过程。 #### 添加依赖项 首先需要在项目的 `pubspec.yaml` 文件里添加对 `xml` 库的依赖: ```yaml dependencies: flutter: sdk: flutter xml: ^6.0.0 # 版本号可能随时间变化而更新,请查阅最新版本 ``` 之后执行命令刷新包缓存以下载并安装新加入的依赖。 #### 解析 XML 字符串 下面展示了一个简单的例子,说明怎样加载一段 XML 数据并通过 `xml` 包将其转换成易于操作的对象结构: ```dart import 'package:flutter/material.dart'; import 'package:xml/xml.dart' as xml; void main() { final String rawXmlData = ''' <library> <book id="b1"> <title>Effective Java</title> <author>Joshua Bloch</author> </book> <book id="b2"> <title>Clean Code</title> <author>Robert C. Martin</author> </book> </library> '''; // 将字符串形式的XML数据转化为Document对象 var document = xml.XmlDocument.parse(rawXmlData); // 遍历所有的<book>节点 List<String> titles = []; for (var bookElement in document.findAllElements('book')) { String title = bookElement.findElements('title').single.text; titles.add(title); } debugPrint(titles.toString()); } ``` 上述代码片段展示了如何定义一个包含书籍信息的简单 XML 结构,并通过调用 `findAllElements()` 方法获取特定标签下的所有子元素集合;接着访问这些子元素内部的内容完成进一步的数据提取工作[^3]。 #### 处理来自网络或本地资源的 XML 文件 当涉及到从互联网上抓取远程服务器上的 XML 文件或是读取存储于应用程序 assets 下面预打包好的静态 XML 文件时,则需先取得该文件的实际内容再按照前述方式解析它。对于前者来说通常会借助 HTTP 请求来获得响应体内的 XML 流;而对于后者则可通过 AssetBundle API 来异步加载指定路径处保存着的目标文档。 考虑到原始资料并未提及具体场景下关于这部分的操作指南,因此这里仅给出一般性的指导思路而不提供具体的实现细节[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值