Flutter构建工具插件builders的使用

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

构建工具插件builders的使用 #

在任何系统注入器中使用 Consumer, Select 和 BlocConsumer。

如何安装 #

打开你的项目并编辑 pubspec.yaml 文件,添加 flutter_modular 作为依赖项:

dependencies:
  builders: any

你也可以通过提供 Git 仓库地址来获取最新功能和修复:

dependencies:
  builders:
    git:
      url: https://github.com/Flutterando/builders

配置你的系统注入器 #

你可以使用任何系统注入器,例如 Modular 或 Get_it。

void main(){
// 使用 Modular
Builders.systemInjector(Modular.get);

// 使用 Get_it
Builders.systemInjector(GetIt.I.get);

runApp(MyApp());

}

在你的Flutter应用中使用 #

这里有一些社区已知的 Builders。我们有来自 Provider 包的 Consumer 和 Selector,以及来自 flutter_bloc 包的 BlocConsumer。

消费者 #

当你想监听一个扩展了 ChangeNotifier 的类时,可以使用 Consumer。

class MyCounter extends ChangeNotifier {
int value;

void increment() {
    value++;
    notifyListeners();
}

}

在你的视图中:

Consumer<MyCounter>(
    builder: (context, myCounter){
        return Text('${myCounter.value}');
    }
);

选择器 #

Selector 的工作方式与 Consumers 类似,但你可以只选择并监听对象的一个属性。

Selector<MyCounter, int>(
    selector: (myCounter) => myCounter.value,
    builder: (context, value){
        return Text('$value');
    }
);

BlocConsumer #

监听来自 bloc 包(Bloc 和 Cubit)的自定义流。

class MyCounterBloc extends Cubit<int> {
MyCounterBloc(): super(0);

void increment() =&gt; emit(state + 1);

}

在你的视图中:

BlocConsumer<MyCounterBloc, int>(
    builder: (context, state){
        return Text('$state');
    }
);

功能和错误报告 #

请将功能请求和错误报告发送到 问题跟踪器

此 README 是基于 Stagehand 提供的模板制作的,并遵循 BSD 风格的 许可证


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

1 回复

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


在Flutter中,构建工具插件(Builders)通常用于在构建过程中生成或转换资源文件。这些插件可以通过build_runner命令行工具来运行,并且通常依赖于build包及其生态系统。以下是一个简单的示例,展示如何创建一个自定义的Builder以及如何使用它。

1. 设置项目

首先,确保你的Flutter项目已经设置好,并且pubspec.yaml文件中已经包含了必要的依赖。你需要添加build_runnerbuild相关的依赖。

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  build_runner: ^2.1.4
  build: ^2.1.1

2. 创建自定义Builder

接下来,你需要创建一个自定义Builder。这通常涉及几个步骤:定义Builder类、生成器函数以及build.yaml配置文件。

2.1 定义Builder类

创建一个新的Dart文件,比如lib/builder/my_custom_builder.dart,并定义你的Builder类:

import 'package:build/build.dart';

Builder myCustomBuilder(BuilderOptions options) {
  return (BuildStep buildStep) async {
    var inputId = buildStep.inputId;
    var inputContent = await buildStep.readAsString(inputId);

    // 在这里进行你需要的转换或生成逻辑
    var outputContent = inputContent.replaceAll('hello', 'hi');

    var outputId = inputId.changeExtension('.output.dart');
    await buildStep.writeAsString(outputId, outputContent);
  };
}

2.2 配置build.yaml

在项目的根目录下创建或编辑build.yaml文件,以注册你的Builder:

builders:
  my_custom_builder:
    import: "package:your_package_name/builder/my_custom_builder.dart"
    builder_factories: ["myCustomBuilder"]
    build_extensions: {".dart": [".output.dart"]}
    auto_apply: root_package
    build_to: source

注意将your_package_name替换为你的实际包名。

3. 使用Builder

现在你可以使用build_runner命令行工具来运行你的Builder。

3.1 创建一个示例输入文件

在你的lib目录下创建一个示例输入文件,比如example.dart

// lib/example.dart
String greet() => 'hello world';

3.2 运行Builder

在命令行中导航到你的项目根目录,并运行以下命令:

flutter pub run build_runner build --delete-conflicting-outputs

如果一切配置正确,你应该会在lib目录下看到一个名为example.output.dart的新文件,内容如下:

// lib/example.output.dart
String greet() => 'hi world';

总结

以上示例展示了如何创建和使用一个简单的自定义Builder。在实际项目中,你可能会需要更复杂的逻辑和配置,但基本的步骤和概念是相似的。通过自定义Builders,你可以在构建过程中自动化许多任务,从而提高开发效率。

回到顶部