Flutter资源清理插件assets_cleaner的使用

Flutter资源清理插件assets_cleaner的使用

pub package

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

1 回复

更多关于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插件来清理未使用的资源文件。

回到顶部