Flutter获取包名、APP名称、版本号、build构建版本号

本文介绍如何使用Flutter的PackageInfo插件获取应用的包名、名称、版本号和构建号,适用于版本迭代和错误日志上报场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行APP版本迭代的过程中, 有时我们需要通过获取当前APP的版本号, 与后端服务器获取的当前最新版本进行比对, 如果出现了最新版本, 我们提醒用户进行应用更新. 本篇文章就来记录一下Flutter获取包名、应用APP名称、版本号、build构建版本号.

最终效果

有图有真相, 先来看下最终效果吧!

应用场景

  1. 通过检查当前APP版本号来判断是否需要更新.
  2. APP出现错误日志需要传回服务器时, 获取APP基本信息(也就是看看bug出现在哪个版本!).

实战开始

引入PackageInfo

老样子, 上官方的存储库中寻找我们今天需要的PackageInfo:

Flutter获取包名、应用APP名称、版本号、build构建版本号-01

一般我们选用第三方库会看三个指标: 评分、兼容性以及活跃度.

这个库将会成为我们获取APP信息的主力.

进入./pubspec.yaml, 导入:

dependencies:
  package_info: ^0.4.0+18

YAML

Copy

Flutter获取包名、应用APP名称、版本号、build构建版本号-02

一定要注意缩进哦!

初始化项目

为了让大家更直观的看到, 这里提供./lib/main.dart的代码, 你可以直接进行复制并运行:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

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

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

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'App信息',
              style: TextStyle(fontSize: 30),
            ),
          ],
        ),
      ),
    );
  }
}

Dart

Copy

💡 代码解析: 只是一个空的项目. 我们将基于这个空项目继续我们的实例.

运行, 如图:

Flutter获取包名、应用APP名称、版本号、build构建版本号-03

使用PackageInfo

./lib/main.dart中进行导入:

import 'package:package_info/package_info.dart';

Dart

Copy

_MyHomePageState中创建四个实例变量, 用来保存信息:

// APP名称
String _appName;
// 包名
String _packageName;
// 版本号
String _version;
// 构建号
String _buildNumber;

Dart

Copy

💡 代码解析: 注释已标注各个属性所代表的含义!

_MyHomePageState内的build()下方创建函数getAppInfo():

/// 获取APP信息
void getAppInfo(){
    PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
        _appName = packageInfo.appName;
        _packageName = packageInfo.packageName;
        _version = packageInfo.version;
        _buildNumber = packageInfo.buildNumber;
    });
    setState(() {});
}

Dart

Copy

💡 代码解析: 这里调用了PackageInfofromPlatform函数. 返回的对象包含了我们需要的四个信息. 最后, 进行setState刷新数据状态.

我们要做的就是在这里获取数据, 并将其展示出来. 替换:

Text(
    'App信息',
    style: TextStyle(fontSize: 30),
),

Dart

Copy

为:

Text(
    'App信息',
    style: TextStyle(fontSize: 30),
),
Text(
    'APP名称: $_appName',
    style: TextStyle(fontSize: 20),
),
Text(
    '包名: $_packageName',
    style: TextStyle(fontSize: 20),
),
Text(
    '版本号: $_version',
    style: TextStyle(fontSize: 20),
),
Text(
    '构建号: $_buildNumber',
    style: TextStyle(fontSize: 20),
),
RaisedButton(
    child: Text(
        '一键获取',
        style: TextStyle(fontSize: 30),
    ),
    onPressed: ()=>getAppInfo(),
)

Dart

Copy

💡 代码解析: 前几个Text并没有什么难点, 只是简单的数据展示. 最后一个RaisedButton通过onPressed来调用上方定义的getAppInfo().

运行项目, 查看效果:

Flutter获取包名、应用APP名称、版本号、build构建版本号-04

搞定!

重点回顾

这里的核心代码:

先导入:

import 'package:package_info/package_info.dart';

Dart

Copy

再使用:

PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
  String appName = packageInfo.appName;
  String packageName = packageInfo.packageName;
  String version = packageInfo.version;
  String buildNumber = packageInfo.buildNumber;
});

Dart

Copy

另一种写法(所在的函数必须由async修饰):

PackageInfo packageInfo = await PackageInfo.fromPlatform();

String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;

Dart

Copy

感谢

结语

至此, 我们成功获取了 Flutter 的包名、应用APP名称、版本号、build构建版本号. 如果你有任何疑问, 欢迎评论.

### Flutter获取 App 信息及设备信息 #### 获取 App 的基本属性 为了在 Flutter 应用中获取应用程序的基本属性,如包名、应用名称版本号构建编号,可以利用 `package_info` 插件。此插件提供了便捷的方式访问这些元数据。 ```dart import 'package:package_info_plus/package_info_plus.dart'; void getAppInfo() async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); String appName = packageInfo.appName; String packageName = packageInfo.packageName; String version = packageInfo.version; String buildNumber = packageInfo.buildNumber; print('App Name: $appName'); print('Package Name: $packageName'); print('Version: $version'); print('Build Number: $buildNumber'); } ``` 上述代码展示了如何异步调用 `PackageInfo.fromPlatform()` 来取得所需的信息并打印出来[^2]。 #### 获取设备信息 对于需要收集设备详情的情况,推荐使用 `device_info_plus` 插件。该库支持多种平台,并能提供详细的硬件描述。 ##### Android 设备信息 ```dart import 'package:device_info_plus/device_info_plus.dart'; Future<void> getAndroidDeviceInfo() async { DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; print('Device ID: ${androidInfo.id}'); print('Brand: ${androidInfo.brand}'); print('Model: ${androidInfo.model}'); print('System Version: ${androidInfo.version.release}'); } ``` ##### iOS 设备信息 ```swift // 注意这是 Swift 语法用于说明 iOS 部分逻辑,在 Dart/Flutter 使用时应采用对应的 Dart API 调用方式。 let iosInfo = UIDevice.current.identifierForVendor?.uuidString ?? "Unknown" print("iOS Vendor Identifier: \(iosInfo)") ``` 实际上,在 Flutter/Dart 环境下应该这样写: ```dart import 'package:device_info_plus/device_info_plus.dart'; Future<void> getIosDeviceInfo() async { DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); IosDeviceInfo iosInfo = await deviceInfo.iosInfo; print('Device Type: ${iosInfo.utsname.machine}'); print('System Name: ${iosInfo.systemName}'); print('System Version: ${iosInfo.systemVersion}'); print('Model: ${iosInfo.model}'); } ``` 以上方法允许开发者轻松读取目标移动操作系统上的特定参数[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值