<返回更多

android Flutter 工程结构和资源文件分辨率相关的图片文件放哪儿

2019-11-07    
加入收藏
android Flutter 工程结构和资源文件分辨率相关的图片文件放哪儿

 

虽然 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 工程结构和资源文件分辨率相关的图片文件放哪儿

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 image
images/2.0x/my_icon.png // 2.0x image
images/3.0x/my_icon.png // 3.0x image

接下来,你需要在 pubspec.yaml 文件中定义这些图片:

assets:
 - images/my_icon.jpeg

然后你就可以使用 AssetImage 访问你的图片了:

return AssetImage("images/my_icon.jpeg");

或者通过 Image Widget 直接访问:

@override
Widget build(BuildContext context) {
 return Image.asset("images/my_image.png");
}

字符串储存在哪里?如何处理本地化?

Flutter 当下并没有一个特定的管理字符串的资源管理系统。目前来讲,最好的办法是将字符串作为静态域存放在类中,并通过类访问它们。例如:

class Strings {
 static String welcomeMessage = "Welcome To Flutter";
}

接着在你们的代码中,你可以这样访问你的字符串:

Text(Strings.welcomeMessage)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>