Flutter入门——面向Android开发者——项目结构和资源

我在哪里存储我的分辨率相关的图像文件?

Android将resources和assets视为不同的项目,而Flutter应用程序只有assets。Android文件夹中的所有resource res/drawable-*都放在Flutter的assets文件夹中。

Flutter遵循像iOS一样简单的基于密度的格式。Assets可能是1.0x2.0x3.0x或任何其他乘数。Flutter没有dp,但是有逻辑像素,和设备无关像素基本一样。实施所谓devicePixelRotio表示物理系像素占耽搁逻辑像素的比例。

相当于Android的density bucket:

Android density qualifier Flutter pixel ratio
ldpi 0.75x
mdpi 1.0x
hdpi 1.5x
xhdpi 2.0x
xxhdpi 3.0x
xxxhdpi 4.0x

Assets位于任意文件夹中——Flutter没有与定义的文件夹结构。您在文件中声明Asset(为有位置)在pubspec.yaml,Flutter回你获取它们。

请注意,在Flutter 1.0 beta 2之前,无法从nativ端访问Flutter中定义的assets,反之亦然,Flutter无法访问native的assets和resource,因为它们位于独立的文件夹中。

在Flutter beta 2开始,Asset存储和在native asset文件中,并在native端使用Android访问AssetManager:

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

截至Flutter beta 2,Flutter仍然无法访问native asset,也无法访问native Resource。

例如,要向我们的Flutter项目添加一个名为my_icon.png的asset,并决定它应该存在于我们任意命名的文件夹中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.jepg

然后,您可以使用以下方式访问您的图像AssetIamge

AssetImage('images/my_icon.jpeg')

或直接在Image小部件中:

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

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

Flutter目前没有专门的字符串类型资源系统。目前,最佳做法是将您的副本文本作为静态字段保存在累中并从那里访问它们。例如:

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

然后在您的砝码中,您可以这样访问您的字符串:

Text(Strings.welcomeMessage);

Flutter对Android上的访问性提供了基本支持,尽管此功能正在开发中。

鼓励 Flutter 开发人员使用 intl 包进行国际化和本地化。

Gradle文件的等价物是什么?吐核添加依赖项

在Android中,您可以通过添加Gradle构建脚本来添加依赖项。Flutter使用Dart自己的构建系统和Pub包管理器。这些工具将原生Android和iOS包装器应用程序的构建委托给各自的构建系统。

虽然Flutter项目的文件夹下有Gradle文件,但Android只有在添加每个平台集成所需native依赖项时才使用这些文件。一般情况下,用于pubspec.yaml生命外部依赖,以便在Flutter中使用。查找Flutter包的包地方是pub.dev。

本文转自 https://juejin.cn/post/7182971543264657468,如有侵权,请联系删除。

你可能感兴趣的:(Flutter入门——面向Android开发者——项目结构和资源)