You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Flutter代码/API获取Flutter版本及依赖包版本(替代Makefile)

获取Flutter版本及依赖包版本(纯代码实现)

完全可以通过Flutter/Dart代码实现,不需要依赖Makefile。以下是具体实现方案:

一、获取Flutter SDK版本

通过dart:io的Process类执行flutter --version命令,解析输出提取版本号:

import 'dart:io';

Future<String> getFlutterSdkVersion() async {
  try {
    final processResult = await Process.run('flutter', ['--version']);
    if (processResult.exitCode != 0) {
      return '获取失败:${processResult.stderr}';
    }
    final outputLines = processResult.stdout.toString().split('\n');
    for (final line in outputLines) {
      if (line.startsWith('Flutter')) {
        return line.split(' ')[1];
      }
    }
    return '未知版本';
  } catch (e) {
    return '错误:$e';
  }
}

二、获取依赖包版本

通过读取项目的pubspec.lock文件(该文件记录了所有依赖的实际安装版本),并用yaml库解析内容:

1. 添加依赖

首先在pubspec.yaml中添加yaml包依赖:

dependencies:
  yaml: ^3.1.2

2. 实现代码

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

Future<Map<String, String>> getDependencyVersions() async {
  final versionMap = <String, String>{};
  try {
    // 注意:移动端/WEB打包后无法直接访问pubspec.lock,建议构建阶段预生成版本文件
    final lockFile = File('pubspec.lock');
    if (!await lockFile.exists()) {
      return {'提示': '未找到pubspec.lock文件'};
    }
    final fileContent = await lockFile.readAsString();
    final yamlData = loadYaml(fileContent) as YamlMap;
    final packages = yamlData['packages'] as YamlMap;
    
    packages.forEach((packageKey, packageValue) {
      final name = packageKey.toString();
      final version = (packageValue as YamlMap)['version'].toString();
      versionMap[name] = version;
    });
    return versionMap;
  } catch (e) {
    return {'错误': e.toString()};
  }
}

注意事项

  • 移动端/WEB适配:打包后的应用无法直接读取项目根目录的pubspec.lock,建议在构建前通过脚本将依赖版本信息生成一个静态dart文件(比如version_info.dart),运行时直接导入该文件即可。
  • Flutter路径问题:执行flutter命令时,需确保flutter已加入系统PATH;若无法保证,可指定flutter的完整路径(比如Process.run('/usr/local/bin/flutter', ['--version']))。

内容的提问来源于stack exchange,提问作者Pushpam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:31:10