Flutter自定义构建工具插件custom_build_tool的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter自定义构建工具插件custom_build_tool的使用

安装

custom_build_tool 是一个 Dart/Flutter 包,旨在帮助管理并自动化 Flutter 应用程序的自定义构建过程。此工具包括版本递增、构建类型选择等功能。

要将 custom_build_tool 添加到项目中,请在 pubspec.yaml 文件中的 dev_dependencies 中包含它:

dev_dependencies:
  custom_build_tool: ^1.2.22

然后,运行以下命令以获取该包:

flutter pub get

使用

运行工具

要运行 custom_build_tool,请使用以下命令:

flutter pub run custom_build_tool
命令行选项
  • --reset 使用 --reset 选项重置用户偏好设置:

    flutter pub run custom_build_tool --reset
    
  • --help 使用 --help 选项显示帮助信息:

    flutter pub run custom_build_tool --help
    

示例

下面是一个如何在您的 Flutter 项目中使用 custom_build_tool 的步骤示例:

  1. 将包添加到 pubspec.yaml:
dev_dependencies:
  custom_build_tool: ^1.2.22
  1. 获取包:
flutter pub get
  1. 运行工具:
flutter pub run custom_build_tool
  1. 如果需要重置偏好设置:
flutter pub run custom_build_tool --reset
  1. 显示帮助信息:
flutter pub run custom_build_tool --help

特性

  • 版本递增: 自动递增 pubspec.yaml 中的版本号。
  • 构建类型选择: 允许用户交互式选择构建类型(发布、调试、配置)。
  • 可定制的偏好设置: 可以保存和重置偏好设置。

贡献

如果您想为该项目做出贡献,请随时提交问题、克隆仓库并发送拉取请求。

许可证

此项目遵循 MIT 许可证 - 详情请参阅 LICENSE 文件。


示例代码

import 'package:example/app_info_model.dart';
import 'package:example/get_app_info.dart';
import 'package:flutter/material.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  AppInfoModel info = await GetAppInfo.details();

  runApp(
    MyApp(info: info),
  );
}

class MyApp extends StatelessWidget {
  final AppInfoModel info;
  const MyApp({
    Key? key,
    required this.info,
  }) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: MyHomePage(
        title: 'Custom build tool Example',
        info: info,
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  final AppInfoModel info;
  const MyHomePage({
    Key? key,
    required this.title,
    required this.info,
  }) : super(
          key: key,
        );

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'this is your app Version:',
            ),
            Text(
              widget.info.appVersion!,
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter自定义构建工具插件custom_build_tool的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自定义构建工具插件custom_build_tool的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter中创建和使用自定义构建工具插件custom_build_tool的示例代码。这个示例将展示如何设置基本的插件结构,并在构建过程中执行一些自定义逻辑。

1. 创建插件项目

首先,确保你已经安装了Flutter和Dart SDK。然后,使用以下命令创建一个新的Flutter插件项目:

flutter create --org com.example --template=plugin custom_build_tool

这将创建一个名为custom_build_tool的插件项目。

2. 配置插件项目

进入插件项目目录,并配置插件的基本信息。编辑pubspec.yaml文件,确保插件的基本信息正确。

name: custom_build_tool
description: A custom build tool for Flutter.
version: 0.1.0
homepage: https://github.com/your-username/custom_build_tool

environment:
  sdk: ">=2.12.0 <3.0.0"
  flutter: ">=1.17.0"

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  build_runner: ^2.0.0
  build: ^2.0.0
  build_config: ^0.4.0

flutter:
  plugin:
    platforms:
      android:
        package: com.example.custom_build_tool
      ios:
        pluginClass: CustomBuildToolPlugin

3. 创建自定义构建脚本

在插件项目根目录下创建一个build.dart文件,这个文件将包含自定义的构建逻辑。

import 'package:build/build.dart';
import 'dart:io';

Builder customBuildTool(BuilderOptions options) {
  return new Builder() {
    @override
    BuildStep buildStepFor(BuildTarget target, Set<BuildDependency> dependencies) {
      return new BuildStep() {
        @override
        Future<void> run() async {
          // 自定义构建逻辑,例如生成一些文件
          var inputId = new AssetId('your_package', 'input_file.txt');
          var outputId = new AssetId('your_package', 'generated_file.dart');
          
          var inputFile = await inputLibraryFor(inputId).readAsString();
          var outputContent = generateContent(inputFile);
          
          await writeAsBytes(outputId, outputContent.codeUnits);
        }

        String generateContent(String input) {
          // 这里是生成内容的逻辑,例如将输入文件的内容转换为Dart代码
          return "// This is a generated file\nString generatedContent = '${input}';";
        }
      };
    }

    @override
    Map<String, List<String>> buildExtensions = {
      '.txt': ['.dart']
    };
  };
}

4. 配置build.yaml

在项目根目录下创建或编辑build.yaml文件,以注册自定义构建脚本。

builders:
  custom_build_tool:
    import: "package:custom_build_tool/build.dart"
    builder_factories: ["customBuildTool"]
    build_extensions: { ".txt": [ ".dart" ] }
    auto_apply: root_package
    build_to: source
    defaults:
      generate_for:
        - flutter

5. 使用自定义构建工具

在你的Flutter应用项目中,添加对custom_build_tool插件的依赖,并创建一个输入文件。

# 在你的Flutter应用项目的pubspec.yaml中添加依赖
dependencies:
  flutter:
    sdk: flutter
  custom_build_tool:
    path: ../path/to/custom_build_tool  # 指向插件项目的相对路径

创建一个名为input_file.txt的文件,并添加一些内容。然后运行以下命令来应用自定义构建逻辑:

flutter pub get
flutter pub run build_runner build

如果配置正确,你应该会在build目录下看到生成的generated_file.dart文件,内容是基于input_file.txt生成的。

总结

这个示例展示了如何创建一个简单的Flutter自定义构建工具插件,并在构建过程中执行一些自定义逻辑。通过修改build.dartbuild.yaml文件,你可以实现更复杂的构建逻辑和文件生成规则。

回到顶部