Flutter资源管理插件asset_manager_tool的使用
Flutter资源管理插件asset_manager_tool的使用
在开发时你可能因为需求的不断修改需要反复地修改、删除、添加一些资产文件。在这个过程中可能遗留一些已经不需要的资产文件,但经过一段时间后你很难判断这些资产文件是否真的可以删除,可能在你不注意的角落仍然有功能需要它们。这个时候我们可能需要一个资产管理器能够去管理这些文件,并给出一点提示,让我们可以更好地判断资产文件是否在项目中使用到。
安装
这个包的目的是帮助我们管理资产文件,并给出提示资产文件是否在项目中使用到。在一般情况下,把它放在dev_dependencies
下,在你的pubspec.yaml
中。
dev_dependencies:
asset_manager_tool:
使用
内置命令
asset_manager_tool
包暴露了一个binary文件,它可以使用dart run asset_manager_tool <command>
执行命令。
可用的命令有watch
,build:asset
,build:list
,clean
。
注意: 安装后第一次运行命令应该是
watch
或build:asset
以生成资产清单文件,默认它是asset_list.dart
。
watch
: 以asset资源为起点创建清单list数据,然后监听asset和清单list的修改重建list或删除asset。build:asset
: 以asset资源为起点创建清单list数据。build:list
: 以清单list数据为起点删除或恢复asset资源。clean
: 以清单list数据为起点清除未使用的asset资源。
命令参数
--help
: 打印帮助信息。--lib-path
:['lib/**.dart']
监听的lib路径。--asset-path
:['lib/assets/*.*']
监听的asset资产路径。当是flutter项目并且没有配置asset-path
时,会取flutter:assets
和flutter:fonts
的资产路径。--dustbin-path
:'.asset_dustbin/'
删除的asset资产保存的垃圾箱文件夹dustbin路径。--list-path
:lib/asset_list.dart
通过asset资产创建的清单list。--config-path
:pubspec.yaml
config文件路径。--name-replace
:{'libAssets':''}
asset资产实例名替换。--exclude-path
:['.*', '.*/**.*', '**/.*', '**/.*/**.*']
排除监听的文件,可以包含lib-path
、asset-path
的路径。--format-type
:value
asset_list.dart格式类型,目前有value
、model
。
在终端中设置参数示例,优先级第一位
$ dart run asset_manager_tool watch --dustbin-path=.asset_dustbin/ --list-path=lib/asset_list.dart --name-replace=libAssets:
$ dart run asset_manager_tool build:asset --dustbin-path=.asset_dustbin/ --list-path=lib/asset_list.dart --name-replace=libAssets:
$ dart run asset_manager_tool build:list --dustbin-path=.asset_dustbin/ --list-path=lib/asset_list.dart --name-replace=libAssets:
$ dart run asset_manager_tool clean --dustbin-path=.asset_dustbin/ --list-path=lib/asset_list.dart --name-replace=libAssets:
在asset_manager_tool.yaml中设置参数示例,优先级第二位
asset_manager_tool:
dustbin-path: .asset_dustbin/
list-path: lib/asset_list.dart
name-replace:
libAssets:
在pubspec.yaml中设置参数示例,优先级第三位
注意: 当是flutter项目并且没有配置
asset-path
时,会取flutter:assets
和flutter:fonts
的资产路径。
flutter:
assets:
- lib/assets/options/
- lib/assets/img/
fonts:
- family: Iconfont
fonts:
- asset: lib/assets/fonts/iconfont.ttf
style: italic
asset_manager_tool:
dustbin-path: .asset_dustbin/
list-path: lib/asset_list.dart
name-replace:
libAssets:
项目中使用
// asset_list.dart文件由参数list-path决定
import 'asset_list.dart';
void main() {
// 资产路径,assetName由资产路径和参数name-replace决定
// 当format-type值为value时
print(AssetList.assetName);
// 当format-type值为model时
print(AssetList.assetName.path);
// 如果是图片,你还可以获得宽、高
// 当format-type值为value时
print(AssetList.assetName$width);
print(AssetList.assetName$height);
// 当format-type值为model时
print(AssetList.assetName.width);
print(AssetList.assetName.height);
}
资产管理和使用提示
- 修改资产文件: 当添加、删除、修改资产文件时
asset_list.dart
中的资产清单也会跟随修改。 - 修改
asset_list.dart
中的资产: 当删除、恢复资产信息实例时,资产文件会被移到、移出垃圾箱文件夹.asset_dustbin/
。 - 是否使用:
asset_list.dart
中的每条资产信息实例前都有一段注释,里面备注了hash和是否使用,Y
有使用,N
没使用。
// 当format-type值为value时
abstract class AssetList {
/* 9b024533 Y */
static const String fontsIconfontRegularTtf = 'lib/assets/fonts/iconfont.ttf';
/* 24d8912f N */
static const String imgCoverJpg = 'lib/assets/img/cover.jpg';
static const int imgCoverJpg$width = 1200;
static const int imgCoverJpg$height = 800;
/* 1757e9c5 N */
static const String optionsDataJson = 'lib/assets/options/data.json';
}
// 当format-type值为model时
abstract class AssetList {
/* 9b024533 Y */ static const AssetItem fontsIconfontRegularTtf = AssetItem('lib/assets/fonts/iconfont.ttf');
/* 24d8912f N */ static const ImageAssetItem imgCoverJpg = ImageAssetItem('lib/assets/img/cover.jpg', 1200, 800);
/* 1757e9c5 N */ static const AssetItem optionsDataJson = AssetItem('lib/assets/options/data.json');
}
更多关于Flutter资源管理插件asset_manager_tool的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter资源管理插件asset_manager_tool的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
asset_manager_tool
是一个用于简化 Flutter 项目中资源管理的插件。它可以帮助你更高效地管理应用中的资源文件(如图片、字体、音频等),并自动生成与之相关的 Dart 代码,从而减少手动编写代码的工作量。
安装 asset_manager_tool
首先,你需要在 pubspec.yaml
文件中添加 asset_manager_tool
插件的依赖项:
dev_dependencies:
asset_manager_tool: ^1.0.0
然后运行 flutter pub get
来安装插件。
使用 asset_manager_tool
1. 配置资源文件
确保你的资源文件已经在 pubspec.yaml
文件中正确配置。例如:
flutter:
assets:
- assets/images/
- assets/fonts/
fonts:
- family: MyCustomFont
fonts:
- asset: assets/fonts/MyCustomFont-Regular.ttf
2. 生成资源管理代码
在项目根目录下运行以下命令,生成资源管理代码:
flutter pub run asset_manager_tool
该命令会根据 pubspec.yaml
中的资源配置,自动生成一个 Dart 文件,通常命名为 assets.dart
,该文件包含了所有资源的路径常量。
3. 使用生成的代码
生成的 assets.dart
文件将包含类似以下的代码:
class Assets {
static const String imagesLogo = 'assets/images/logo.png';
static const String fontsMyCustomFont = 'assets/fonts/MyCustomFont-Regular.ttf';
}
在代码中,你可以直接引用这些常量来加载资源:
import 'assets.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Image.asset(Assets.imagesLogo),
),
),
);
}
}
优点
- 减少手动编码:通过自动生成资源路径常量,减少了手动编写代码的工作量。
- 避免拼写错误:生成的常量避免了手动输入路径时可能出现的拼写错误。
- 易于维护:当资源文件发生变化时,只需重新运行生成命令,生成的代码会自动更新。
自定义配置
你可以通过命令行参数或配置文件来定制 asset_manager_tool
的行为,例如指定生成的 Dart 文件的路径、文件名等。
flutter pub run asset_manager_tool --output lib/generated/assets.dart