Sza*_*mot 5 assets image flutter ios-darkmode android-dark-theme
我在我的 flutter 项目中使用具有不同分辨率的图像,如此处所述。现在我想为深色模式主题添加自定义图像。我在 pubspec.yaml 中的资产声明如下所示:
flutter:
uses-material-design: true
assets:
- assets/images/img_menu.png
- ...
Run Code Online (Sandbox Code Playgroud)
我的资产结构:
.../pubspec.yaml
.../assets/images/img_menu.png
.../assets/images/0.75x/img_menu.png
.../assets/images/1.5x/img_menu.png
.../assets/images/2.0x/img_menu.png
.../assets/images/3.0x/img_menu.png
.../assets/images/4.0x/img_menu.png
Run Code Online (Sandbox Code Playgroud)
我以这种方式在项目中加载图像:
Image.asset('assets/images/img_menu.png')
Run Code Online (Sandbox Code Playgroud)
我知道对于简单的单色图像我可以像这样改变它的颜色:
Image.asset('assets/images/img_menu.png',
color: Theme.of(context).brightness == Brightness.light
? Colors.black
: Colors.white,)
Run Code Online (Sandbox Code Playgroud)
但我的大多数图像都比较复杂,所以我必须为它们加载自定义资源。
正如此处所述,在添加暗模式资产后,我可以不做任何更改地保留 pubspec。我尝试过黑暗模式的不同资产结构,但没有一个有效。
1:
.../pubspec.yaml
.../assets/images/img_menu.png
.../assets/images/dark/img_menu.png
.../assets/images/0.75x/img_menu.png
.../assets/images/0.75x/dark/img_menu.png
.../assets/images/1.5x/img_menu.png
.../assets/images/1.5x/dark/img_menu.png
.../assets/images/2.0x/img_menu.png
.../assets/images/2.0x/dark/img_menu.png
.../assets/images/3.0x/img_menu.png
.../assets/images/3.0x/dark/img_menu.png
.../assets/images/4.0x/img_menu.png
.../assets/images/4.0x/dark/img_menu.png
Run Code Online (Sandbox Code Playgroud)
2:
.../pubspec.yaml
.../assets/images/img_menu.png
.../assets/images/0.75x/img_menu.png
.../assets/images/1.5x/img_menu.png
.../assets/images/2.0x/img_menu.png
.../assets/images/3.0x/img_menu.png
.../assets/images/4.0x/img_menu.png
.../assets/images/dark/img_menu.png
.../assets/images/dark/0.75x/img_menu.png
.../assets/images/dark/1.5x/img_menu.png
.../assets/images/dark/2.0x/img_menu.png
.../assets/images/dark/3.0x/img_menu.png
.../assets/images/dark/4.0x/img_menu.png
Run Code Online (Sandbox Code Playgroud)
3:
.../pubspec.yaml
.../assets/images/img_menu.png
.../assets/images/0.75x/img_menu.png
.../assets/images/1.5x/img_menu.png
.../assets/images/2.0x/img_menu.png
.../assets/images/3.0x/img_menu.png
.../assets/images/4.0x/img_menu.png
.../assets/dark/images/img_menu.png
.../assets/dark/images/0.75x/img_menu.png
.../assets/dark/images/1.5x/img_menu.png
.../assets/dark/images/2.0x/img_menu.png
.../assets/dark/images/3.0x/img_menu.png
.../assets/dark/images/4.0x/img_menu.png
Run Code Online (Sandbox Code Playgroud)
单图像的解决方案是这样加载它:
Image.asset(Theme.of(context).brightness == Brightness.light
? 'assets/images/img_menu.png'
: 'assets/images/dark/img_menu.png',)
Run Code Online (Sandbox Code Playgroud)
但这对于整个项目来说并不是一个方便的解决方案。
更奇怪的是,在 2 种变体应用程序中,加载了两种颜色的深色图像:浅色和深色主题(在 iPhone 和 Android 上测试)。
所以问题是:暗模式和分辨率感知图像资源的文件结构应该是什么样的?
| 归档时间: |
|
| 查看次数: |
2257 次 |
| 最近记录: |