文章插图
虽然 Android 区分对待资源文件 (resources) 和资产文件 (assets),但是 Flutter 应用只有资产文件 (assets) 。所有原本在 Android 中应该放在 res/drawable-* 文件夹中的资源文件,在 Flutter 中都放在一个 assets 文件夹中 。
Flutter 遵循一个简单的类似 IOS 的密度相关的格式 。文件可以是一倍 (1.0x)、两倍 (2.0x)、三倍 (3.0x) 或其它的任意倍数 。Flutter 没有 dp 单位,但是有逻辑像素尺寸,基本和设备无关的像素尺寸是一样的 。名称为 devicePixelRatio 的尺寸表示在单一逻辑像素标准下设备物理像素的比例 。
和 Android 的密度分类的对照表如下:
Android 密度修饰符
Flutter 像素比例
文章插图
Android 密度修饰符Flutter 像素比例
文件放置于任意文件夹中—Flutter 没有预先定义好的文件夹结构 。你在 pubspec.yaml 文件中定义文件(包括位置信息),Flutter 负责找到它们 。
需要注意的是,在 Flutter 1.0 beta 2 之前,在 Flutter 中定义的文件不能被原生端访问,反之亦然,原生端定义的资产文件 (assets) 和资源文件 (resources) 也无法被 Flutter 访问,因为它们是放置于不同的文件夹中的 。
至于 Flutter beta 2,文件是放置于原生端的 asset 文件夹中,所以可以被原生端的 AssetManager 访问:
val flutterAssetStream = assetManager.open("flutter_assets/assets/my_flutter_asset.png")然而对于 Flutter beta 2,Flutter 依然无法访问原生资源文件(resources),也无法访问原生资产文件(assets) 。
如果你要向 Flutter 项目中添加一个新的叫 my_icon.png 的图片资源,并且将其放入我们随便起名的叫做 images 的文件夹中,你需要将基础图片(1.0x)放在 images 文件夹中,并将其它倍数的图片放入以特定倍数作为名称的子文件夹中:
images/my_icon.png // Base: 1.0x imageimages/2.0x/my_icon.png // 2.0x imageimages/3.0x/my_icon.png // 3.0x image接下来,你需要在 pubspec.yaml 文件中定义这些图片:
assets: - images/my_icon.jpeg然后你就可以使用 AssetImage 访问你的图片了:
return AssetImage("images/my_icon.jpeg");或者通过 Image Widget 直接访问:
@overrideWidget build(BuildContext context) { return Image.asset("images/my_image.png");}字符串储存在哪里?如何处理本地化?Flutter 当下并没有一个特定的管理字符串的资源管理系统 。目前来讲,最好的办法是将字符串作为静态域存放在类中,并通过类访问它们 。例如:
class Strings { static String welcomeMessage = "Welcome To Flutter";}接着在你们的代码中,你可以这样访问你的字符串:
Text(Strings.welcomeMessage)
【android Flutter 工程结构和资源文件分辨率相关的图片文件放哪儿】
推荐阅读
- Android开发者,是时候了解LeakCanary了
- 11个促进Android应用开发的工具
- Android代码中是如何下毒的
- Android 异步消息处理机制解析
- 茶树基因工程技术研究或使茶叶生产取得突破
- 品品香被列入省级白茶企业工程技术研究中心
- 一位Android资深工程师对移动端架构的思考
- 人体工程学电脑椅品牌 人体工程学电脑椅的作用
- 助理工程师职称评定个人工作总结 助理工程师工作总结
- 如何正确的在 Android 上使用协程?