Flutter未知功能插件gitsumu的使用(由于介绍为undefined,故以“未知功能”代替)

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

Flutter未知功能插件gitsumu的使用(由于介绍为undefined,故以“未知功能”代替)

gitsumu 是一个用于获取编译环境信息的Dart包,包括Git信息和Flutter版本等。

特性

  • dart-define更容易使用:只需要在编译时运行一次命令,无需指定平台脚本。
  • 使用常量变量保存信息:所有生成的信息都作为常量变量。

当然,这个包支持纯Dart和Flutter项目。

使用方法

dart run gitsumu

dart run build_runner build

基础用法

完整的例子可以在example文件夹中找到。

  1. pubspec.yaml文件中添加gitsumu依赖:

    dependencies:
      gitsumu: # 当前版本
    

    如果你想要使用build_runner,还需要添加以下内容:

    dev_dependencies:
      build_runner: # 当前版本
    

    注意:只有通过dart run gitsumu可以实现自动更新,如果你使用build_runner,则需要删除现有的生成文件后重新运行。详见限制部分。

  2. 创建一个源文件作为入口,例如lib/utils/git_info.dart。在这个源文件中,只需添加一行:

    // lib/utils/git_info.dart
    part 'git_info.g.dart';
    
  3. build.yaml文件中保存配置,告诉gitsumu应该为哪个文件生成代码:

    targets:
      $default:
        builders:
          gitsumu|info:
            generate_for:
              - lib/utils/git_info.dart
    
  4. 运行dart run gitsumu(推荐)或dart run build_runner build来生成lib/utils/git_info.g.dart文件。

  5. 需要生成的代码时,导入lib/utils/git_info.dart

自定义信息

gitsumu支持将自定义命令的结果保存为常量变量。

在要生成的文件中定义每个命令的变量:

@CustomInfo('myCommandResult')
const aNotImportantName = ['dart', '--help'];

@CustomInfo('myCommandResult2', ignoreStderr: true)
const alsoNotImportantName = ['git', 'checkout', '123456789'];

@CustomInfo('myCommandFromStderr', useStderr: true)
const alsoNotImportantName2 = ['git', 'abc'];

@CustomInfo(
  'myCommandResult3',
  platforms: {
    CustomInfoPlatforms.linux,
    CustomInfoPlatforms.macos,
  },
)
const alsoNotImportantName3 = ['uname', '-m'];

@CustomInfo(
  'myCommandResult4',
  platforms: {
    CustomInfoPlatforms.windows,
  },
  platformDefaultValue: 'unknown',
)
const alsoNotImportantName4 = ['hostname'];

生成的代码:

// 自定义信息
const myCommandResult = '''A command-line utility for Dart development.

Usage: dart <command|dart-file> [arguments]

Global options:
-v, --verbose               Show additional command output.
    --version               Print the Dart SDK version.
    --enable-analytics      Enable analytics.
    --disable-analytics     Disable analytics.
    --suppress-analytics    Disallow analytics for this `dart *` run without changing the analytics configuration.
-h, --help                  Print this usage information.

Available commands:
  analyze    Analyze Dart code in a directory.
  compile    Compile Dart to various formats.
  create     Create a new Dart project.
  devtools   Open DevTools (optionally connecting to an existing application).
  doc        Generate API documentation for Dart projects.
  fix        Apply automated fixes to Dart source code.
  format     Idiomatically format Dart source code.
  info       Show diagnostic information about the installed tooling.
  pub        Work with packages.
  run        Run a Dart program.
  test       Run tests for a project.

Run "dart help <command>" for more information about a command.
See https://dart.dev/tools/dart-tool for detailed documentation.''';
const myCommandResult2 = '''''';
const myCommandFromStderr = '''git: 'abc' is not a git command. See 'git --help'.

The most similar command is
	add''';
const myCommandResult3 = '''x86_64''';
const myCommandResult4 = '''unknown''';

选项说明:

  • ignoreStderr: 如果自定义命令将内容写入stderr,仍然保存内容。布尔类型,默认值为false。
  • useStderr: 将stderr的内容作为结果保存。布尔类型,默认值为false。
  • platforms: 指定只在哪个平台上运行命令,默认在所有平台上运行。
  • platformDefaultValue: 设置未包含在platforms中的平台上的命令结果,默认为空字符串。

更改保存路径

与其他包一样,你可以更改保存路径。在build.yaml文件中添加以下代码,将文件生成到lib/generated/目录:

targets:
  $default:
    builders:
      gitsumu|info:
        generate_for:
          # 只为lib/utils/git_info.dart => git_info.g.dart生成
          - lib/utils/git_info.dart
        # 如果你想将代码生成到指定文件夹,如"lib/generated",则使用以下"options"配置。
        # 同时,你需要在源文件中使用"part of 'generated/xxx.g.dart';"而不是当前的"part of 'xxx.g.dart';"。
        # 推荐将"lib/generated/"添加到.gitignore中。
        options:
          build_extensions:
            '^lib/{{}}.dart': 'lib/generated/{{}}.g.dart'

更多关于Flutter未知功能插件gitsumu的使用(由于介绍为undefined,故以“未知功能”代替)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter未知功能插件gitsumu的使用(由于介绍为undefined,故以“未知功能”代替)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在探讨关于Flutter中未知功能插件(如你提到的gitsumu,假设它是一个实际存在的Flutter插件但功能未明确定义)的使用时,由于我们没有具体的插件文档或API参考,无法提供确切的功能描述。然而,我可以展示一个如何在Flutter项目中集成和使用一个假设的第三方插件的基本流程,并假设gitsumu插件遵循Flutter插件的一般结构。

请注意,以下代码示例是基于假设和通用Flutter插件集成流程的,实际使用时需要根据gitsumu插件的具体文档进行调整。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加对该插件的依赖。假设gitsumu插件的pub.dev页面提供了如下依赖项:

dependencies:
  flutter:
    sdk: flutter
  gitsumu: ^x.y.z  # 替换为实际的版本号

确保替换^x.y.z为实际的版本号,然后运行flutter pub get来安装依赖。

2. 导入插件

在你的Dart文件中导入该插件。通常,插件的导入路径会基于其包名,例如:

import 'package:gitsumu/gitsumu.dart';

3. 使用插件功能

由于我们不知道gitsumu的具体功能,以下代码将展示如何假设性地调用一个可能的方法。假设gitsumu有一个名为performUnknownAction的方法:

import 'package:flutter/material.dart';
import 'package:gitsumu/gitsumu.dart';  // 导入插件

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String result = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Result: $result',
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                try {
                  // 假设gitsumu有一个名为performUnknownAction的异步方法
                  String response = await Gitsumu.performUnknownAction();
                  setState(() {
                    result = response;
                  });
                } catch (e) {
                  setState(() {
                    result = 'Error: ${e.message}';
                  });
                }
              },
              child: Text('Perform Unknown Action'),
            ),
          ],
        ),
      ),
    );
  }
}

在上面的代码中,我们假设Gitsumu类有一个静态方法performUnknownAction,该方法返回一个Future<String>。用户点击按钮时,将调用此方法,并更新UI以显示结果或错误信息。

注意事项

  1. 插件文档:务必查阅gitsumu插件的官方文档,了解其实际提供的功能、方法和参数。
  2. 错误处理:在实际应用中,添加适当的错误处理逻辑,以处理插件调用可能引发的异常。
  3. 版本兼容性:确保你使用的Flutter SDK版本与gitsumu插件兼容。

由于gitsumu是一个假设的插件名,上述代码仅用于演示如何在Flutter项目中集成和使用第三方插件。实际使用时,请遵循gitsumu插件的官方文档和API参考。

回到顶部