Flutter资源清理插件assets_cleaner的使用
Flutter资源清理插件assets_cleaner的使用
assets_cleaner
是一个命令行工具,可以帮助你清理项目中的资源文件夹。它会移除所有在项目中未使用的文件。你可以选择删除所有文件或者仅查看哪些文件未被使用。
此工具支持任何从 [assets]
文件夹中的扩展名。它会自动检测来自 pubspec.yaml
的资产位置。
在新版本中,我们添加了一个新功能来扫描项目中的未使用库。你可以使用命令 scanlib
来扫描并移除项目中的所有未使用依赖。
📖 指南
1. 安装
Pub Global
适用于 macOS, Linux 和 Windows。
$ dart pub global activate assets_cleaner
2. 设置配置文件(可选,用于 scanlib
命令)
运行初始化命令以创建配置文件。此命令将在你的项目根目录中创建一个名为 assets_cleaner.yaml
的文件。
$ assets_cleaner init
之后,你可以编辑配置文件以排除一些你不想被扫描的文件或扩展名。示例如下:
config:
# 如果你想排除特定的扩展名
exclude-extension:
# - jpg # 取消注释此行以使用
# - png # 取消注释此行以使用
# 如果你想排除特定的文件
exclude-file:
# - /assets/images/banner_upgrade.png # 取消注释此行以使用
# - /assets/images/logo.png # 取消注释此行以使用
# 支持 GLOB
# - /assets/images/**
# - /assets/icons/**.jpg
# - /assets/icons/logo/**.png
# - /assets/icons/items/child/**
# - /assets/sound/**/**.mp3
🚀 使用
设置好配置后,你可以通过运行以下命令来使用该包:
1. 扫描项目中的所有未使用的资源文件
$ assets_cleaner unused
2. 扫描项目中的所有未使用的资源文件并删除它们
$ assets_cleaner clean
3. 扫描所有未使用的资源文件并移动到回收站文件夹
$ assets_cleaner trash
4. 扫描并移除项目中的所有未使用的依赖项
$ assets_cleaner scanlib
你也可以使用快速命令而不必输入任何提示:
$ assets_cleaner scanlib -f
或
$ assets_cleaner scanlib --fast
⭐ 贡献
如果你希望为本仓库中的现有插件贡献更改,请 Fork 仓库并提交拉取请求。如果有任何问题,请打开一个 Issue。
示例代码
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// 这个小部件是你的应用的根。它是一个无状态小部件,意味着
// 它有一个状态对象(定义在下面),包含影响其外观的字段。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// 这是你的应用的主题。
//
// 尝试运行你的应用。你会看到应用有一个蓝色的工具栏。然后,不退出应用,
// 将 primarySwatch 改为 Colors.green 并重新加载(在运行 "flutter run" 的控制台中按 "r",
// 或者在 Flutter IDE 中保存你的更改以重新加载)。注意计数器并没有重置回零;应用
// 没有重新启动。
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
// 这个小部件是你的应用的首页。它是一个有状态的小部件,意味着
// 它有一个状态对象(定义在下面)来改变它的外观。
//
// 这个类是状态的配置。它保留了由父级(在这个例子中是 App 小部件)提供的值(在这个
// 例子中是标题)并供构建方法使用。Widget 子类中的字段总是标记为 "final"。
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
// 这个调用告诉 Flutter 框架某些东西已经改变了,因此它会重新运行构建方法
// 以便显示更新后的值。如果我们不调用 setState 而只是改变 _counter,
// 那么构建方法不会再次运行,所以看起来好像什么都没有发生。
_counter++;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
// 每次调用 setState 时都会重新运行此方法,就像上面的 _incrementCounter 方法所做的那样。
//
// Flutter 框架已优化以使重新运行构建方法变得快速,这样你就可以重建任何需要更新的东西,
// 而不必逐个更改小部件实例。
return Scaffold(
appBar: AppBar(
// 这里我们从 MyHomePage 对象中获取值,该对象是由 App.build 方法创建的,
// 并将其用于设置我们的应用工具栏标题。
title: Text(widget.title),
),
body: Center(
// Center 是一个小部件。它接受单个子元素并将其放置在父元素的中间。
child: Column(
// Column 也是一个布局小部件。它接受一个子元素列表并垂直排列它们。
// 默认情况下,它水平调整自身大小以适应其子元素,并尝试与父元素一样高。
//
// 调用 "调试绘制"(在控制台中按 "p",选择 Android Studio 中 Flutter Inspector 的 "切换调试绘制"
// 动作,或 Visual Studio Code 中的 "切换调试绘制" 命令)可以看到每个小部件的线框图。
//
// Column 有许多属性可以控制其自身的大小和子元素的位置。在这里我们使用 mainAxisAlignment
// 将子元素垂直居中;主轴是垂直轴因为 Columns 是垂直的(交叉轴是水平的)。
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text(
'你已经按下了按钮这么多次:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: '增加',
child: const Icon(Icons.add),
), // 这个逗号使得格式化更美观
);
}
}
更多关于Flutter资源清理插件assets_cleaner的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter资源清理插件assets_cleaner的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用assets_cleaner
插件进行资源清理的示例代码和步骤。assets_cleaner
插件可以帮助你清理未使用的资产文件,从而优化应用的包大小。
步骤 1: 添加依赖
首先,在你的pubspec.yaml
文件中添加assets_cleaner
依赖:
dependencies:
flutter:
sdk: flutter
assets_cleaner: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
步骤 2: 配置assets_cleaner
在你的项目根目录下创建一个名为assets_cleaner.yaml
的配置文件。这个文件将定义哪些目录或文件应该被扫描以查找未使用的资源。
例如,assets_cleaner.yaml
文件可能如下所示:
# assets_cleaner.yaml
include:
- assets/**/*
exclude:
- assets/used/**/*
这个配置表示assets_cleaner
将扫描assets
目录下的所有文件,但排除assets/used
目录中的文件。
步骤 3: 使用命令行工具
assets_cleaner
插件提供了一个命令行工具来执行资源清理。你可以在终端中运行以下命令来执行资源清理:
flutter pub run assets_cleaner
这个命令将读取assets_cleaner.yaml
配置文件,扫描指定的目录,并删除未使用的资源文件。
示例代码结构
假设你的项目结构如下:
my_flutter_app/
├── assets/
│ ├── used/
│ │ └── image1.png
│ ├── unused/
│ └── image2.png
├── lib/
│ └── main.dart
├── pubspec.yaml
└── assets_cleaner.yaml
在这个例子中,image1.png
是被使用的资源文件,而image2.png
是未使用的资源文件。运行flutter pub run assets_cleaner
命令后,assets/unused/image2.png
将被删除。
注意事项
- 备份重要文件:在运行资源清理工具之前,确保你已经备份了所有重要的资源文件。
- 谨慎使用:由于资源清理操作是不可逆的,因此请确保你的配置文件准确无误,以避免误删重要文件。
- 测试:在正式运行资源清理之前,最好在一个测试分支或环境中进行测试,以确保一切按预期工作。
通过以上步骤和示例代码,你应该能够在Flutter项目中使用assets_cleaner
插件来清理未使用的资源文件。