Flutter iOS构建信息获取插件build_info_ios的使用

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

Flutter iOS构建信息获取插件build_info_ios的使用

1. 插件简介

build_info_iosbuild_info 包的 iOS 实现。它允许你在 Flutter 应用中获取 iOS 构建信息,如构建日期和安装日期。

2. 使用方法

该插件是官方推荐的联合插件(endorsed federated plugin),这意味着你可以直接在项目中使用 build_info,而不需要显式地将 build_info_ios 添加到 pubspec.yaml 文件中。不过,如果你需要直接使用 build_info_ios 的 API,仍然需要在 pubspec.yaml 中添加它。

3. iOS 版本实现原理

build_info_ios 的工作原理如下:

  1. 通过 Flutter 调用 BuildInfo.fromPlatform 方法。
  2. 使用 path(forResource:ofType:) 获取 Info.plist 文件的最后修改日期和时间,并将其作为构建日期和时间。
  3. 获取 Document Directory 的创建日期和时间,并将其作为安装日期和时间。
  4. 返回步骤 2 和 3 中获取的值。

如果无法获取这些日期和时间,则返回 null

4. 完整示例 Demo

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 build_info_ios 插件来获取构建信息并显示在界面上。

// Copyright 2024 Craftsoft LLC. All rights reserved.
// Use of this source code is governed by a MIT-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:build_info_platform_interface/build_info_data.dart';
import 'package:build_info_ios/build_info_ios.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  BuildInfoData? _buildInfoData; // 用于存储构建信息
  final _buildInfoIOSPlugin = BuildInfoIOS(); // 创建 BuildInfoIOS 实例

  [@override](/user/override)
  void initState() {
    super.initState();
    initBuildInfoState(); // 初始化构建信息
  }

  // 异步方法,用于从平台获取构建信息
  Future<void> initBuildInfoState() async {
    BuildInfoData? buildInfoData;
    
    try {
      // 从平台获取构建信息
      buildInfoData = await _buildInfoIOSPlugin.fromPlatform();
    } on PlatformException catch (e, stackTrace) {
      // 捕获平台异常并打印错误信息
      debugPrint(e.message);
      debugPrintStack(stackTrace: stackTrace);
    }

    // 如果 widget 已经被移除,则不再更新状态
    if (!mounted) return;

    setState(() {
      _buildInfoData = buildInfoData; // 更新构建信息
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text('BuildDate: ${_buildInfoData?.buildDate}'), // 显示构建日期
              Text('InstallDate: ${_buildInfoData?.installDate}'), // 显示安装日期
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter iOS构建信息获取插件build_info_ios的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter iOS构建信息获取插件build_info_ios的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter中使用build_info_ios插件来获取iOS构建信息的代码案例。build_info_ios插件允许你访问iOS应用的构建信息,比如CFBundleName、CFBundleVersion等。

步骤 1: 添加依赖

首先,你需要在pubspec.yaml文件中添加build_infobuild_info_ios依赖。注意,build_info_iosbuild_info包的一部分,因此只需添加build_info即可。

dependencies:
  flutter:
    sdk: flutter
  build_info: ^2.0.0  # 请使用最新版本

然后运行flutter pub get来安装依赖。

步骤 2: 使用插件获取iOS构建信息

接下来,在你的Flutter项目中,你可以使用BuildInfo类来获取iOS的构建信息。以下是一个示例代码,展示了如何获取并打印iOS应用的名称和版本号。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('iOS Build Info Example'),
        ),
        body: Center(
          child: FutureBuilder<BuildInfo>(
            future: BuildInfo.instance,
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.done) {
                final BuildInfo buildInfo = snapshot.data!;
                if (buildInfo.platform == TargetPlatform.iOS) {
                  final Map<String, dynamic> iosInfo = buildInfo.iosInfo!;
                  return Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      Text('App Name (CFBundleName): ${iosInfo['CFBundleName']}'),
                      Text('App Version (CFBundleShortVersionString): ${iosInfo['CFBundleShortVersionString']}'),
                      Text('Build Number (CFBundleVersion): ${iosInfo['CFBundleVersion']}'),
                    ],
                  );
                } else {
                  return Text('This is not an iOS build.');
                }
              } else {
                return CircularProgressIndicator();
              }
            },
          ),
        ),
      ),
    );
  }
}

解释

  1. 导入依赖:首先导入package:flutter/material.dartpackage:build_info/build_info.dart
  2. FutureBuilder:使用FutureBuilder来异步获取BuildInfo实例。
  3. 检查平台:确保当前平台是iOS。
  4. 访问iOS信息:从buildInfo.iosInfo中获取iOS应用的构建信息,比如CFBundleName、CFBundleShortVersionString和CFBundleVersion。
  5. 显示信息:将获取到的信息显示在屏幕上。

注意事项

  • 确保你的iOS项目已经正确配置,并且有相应的构建信息。
  • build_info插件需要Flutter 2.0或更高版本。
  • 在实际开发中,你可能需要根据具体需求对代码进行调整,比如错误处理、UI设计等。

这样,你就可以在Flutter应用中轻松获取并显示iOS的构建信息了。

回到顶部