Flutter版本生成管理插件version_gen的使用

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

Flutter版本生成管理插件version_gen的使用

插件简介

version_gen 是一个用于 Dart 代码生成的工具,它可以帮助你从 pubspec.yaml 文件中获取包的版本信息。在 Dart 生态系统中,无法直接从代码中获取包的版本。

VersionGen

安装步骤

  1. 在你的 pubspec.yaml 文件中添加 build_runnerversion_gen

    dev_dependencies:
      build_runner: ^2.0.4
      version_gen: ^1.0.0
    
  2. 安装 version_gen

    $ flutter pub get
    
  3. 使用 version_gen 生成版本文件:

    $ flutter packages pub run build_runner build
    

配置文件

version_gen 根据 pubspec.yaml 文件中的 VersionGen 键生成 Dart 文件。默认配置可以在这里找到。

# pubspec.yaml
# ...

dev_dependencies:
  build_runner: ^2.0.4
  version_gen: ^1.0.0

# Optional (default: lib/gen/)
version_gen:
  path: lib/gen/

输出文件

version_gen 会生成一个包含版本信息的 Dart 文件,如下所示:

/// DO NOT MODIFY BY HAND, Generated by version_gen
String packageVersion = '1.0.0+1';

示例项目

以下是一个完整的示例项目,展示如何使用 version_gen 获取和显示包的版本信息。

main.dart
import 'package:flutter/material.dart';
// 导入生成的版本文件
import 'package:your_project_name/gen/package_version.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.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
            // 显示包的版本信息
            Text(
              'Package Version: $packageVersion',
              style: Theme.of(context).textTheme.headline6,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter版本生成管理插件version_gen的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter版本生成管理插件version_gen的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中,使用version_gen插件可以自动化管理应用的版本号。以下是如何在Flutter项目中集成和使用version_gen插件的详细步骤,包括相关代码示例。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加version_gen依赖:

dependencies:
  flutter:
    sdk: flutter
  version_gen: ^x.y.z  # 替换为最新版本号

然后运行flutter pub get来获取依赖。

2. 配置build.yaml

在你的项目根目录下创建或编辑build.yaml文件,添加以下配置:

targets:
  $default:
    builders:
      version_gen:version_gen:
        options:
          input_file: pubspec.yaml  # 指定输入文件,通常是pubspec.yaml

3. 创建版本信息类

在你的项目中创建一个Dart文件(例如version_info.dart),用于生成版本信息类。这个文件通常位于lib目录下。

// lib/version_info.dart
part 'version_info.g.dart';

class VersionInfo {
  final String version;
  final int buildNumber;

  const VersionInfo({required this.version, required this.buildNumber});

  // 其他你可能需要的版本信息方法或属性
}

4. 生成版本信息

运行flutter pub run build_runner build命令来生成版本信息文件。version_gen插件会根据pubspec.yaml中的版本号信息生成一个名为version_info.g.dart的文件。

生成的version_info.g.dart文件内容大致如下(具体内容会根据pubspec.yaml中的版本号变化):

// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'version_info.dart';

// ignore_for_file: unused_import, camel_case_types, annotate_overrides, non_constant_identifier_names, unnecessary_brace_in_string_interps, unused_element

const VersionInfo kVersionInfo = VersionInfo(
  version: '1.0.0',
  buildNumber: 1,
);

5. 使用版本信息

现在你可以在你的项目中导入并使用生成的版本信息类了。例如,在main.dart中:

import 'package:flutter/material.dart';
import 'version_info.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Version Info Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('App Version: ${kVersionInfo.version}'),
              Text('Build Number: ${kVersionInfo.buildNumber}'),
            ],
          ),
        ),
      ),
    );
  }
}

总结

通过上述步骤,你已经成功地在Flutter项目中集成了version_gen插件,并生成了版本信息类。现在你可以在任何需要的地方使用这些版本信息,而无需手动更新它们。每次你更改pubspec.yaml中的版本号时,只需重新运行flutter pub run build_runner build命令即可生成最新的版本信息。

回到顶部