Flutter网页构建信息获取插件build_info_web的使用

Flutter网页构建信息获取插件build_info_web的使用

build_info_webbuild_info 包在Web平台上的实现。

使用

该包已被官方推荐使用(endorsed federated plugin),因此你可以像使用其他包一样直接使用 build_info。当你这样使用时,此包会自动包含在你的应用中,因此你无需在 pubspec.yaml 文件中添加它。

但是,如果你需要导入此包以直接使用其API,则应像往常一样将其添加到 pubspec.yaml 文件中。

关于Web版本的实现

Web版本的 build_info 的工作方式如下:

  1. 调用 Flutter 中的 BuildInfo.fromPlatform 方法。
  2. 使用HEAD或GET方法请求 “version.json” 作为构建日期和时间,并使用 <code>Last-Modified</code><code>Date</code> 响应头值。
  3. 如果无法从 “version.json” 获取日期和时间,则使用 <code>document.lastModified</code> 的值。

如果无法获取日期和时间,它将为 null。在Web版本中,安装日期和时间始终为 null

完整示例代码

以下是一个完整的示例,展示了如何使用 build_info_web 插件来获取构建信息。

// 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_web/build_info_web.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 _buildInfoWebPlugin = BuildInfoWeb();

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,所以我们通过异步方法进行初始化。
  Future<void> initPlatformState() async {
    BuildInfoData? buildInfoData;
    // 平台消息可能会失败,所以我们使用try/catch捕获PlatformException。
    // 我们还处理了消息可能返回null的情况。
    try {
      buildInfoData = await _buildInfoWebPlugin.fromPlatform();
    } on PlatformException catch (e, stackTrace) {
      debugPrint(e.message);
      debugPrintStack(stackTrace: stackTrace);
    }

    // 如果小部件在异步平台消息还在飞行时被从树中移除,我们希望丢弃回复而不是调用setState来更新我们的不存在的外观。
    if (!mounted) return;

    setState(() {
      _buildInfoData = buildInfoData;
    });
  }

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

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

1 回复

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


当然,下面是一个关于如何在Flutter Web项目中使用build_info_web插件来获取构建信息的示例代码。这个插件主要用于从Flutter Web应用的构建输出中提取构建信息(如构建时间、Git版本等)。

首先,确保你已经在pubspec.yaml文件中添加了build_info_web依赖:

dependencies:
  flutter:
    sdk: flutter
  build_info_web: ^0.1.0  # 请确保使用最新版本号

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

接下来,在你的Flutter Web项目中,你可以通过以下步骤来获取和使用构建信息:

  1. 创建一个服务来提供构建信息

lib目录下创建一个新的Dart文件,例如build_info_service.dart,并添加以下代码:

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

class BuildInfoService {
  static Future<BuildInfo?> getBuildInfo() async {
    try {
      return await BuildInfoWeb.load();
    } catch (e) {
      print('Failed to load build info: $e');
      return null;
    }
  }
}
  1. 在你的应用中显示构建信息

现在,你可以在你的主应用文件(例如main.dart)中使用这个服务来获取并显示构建信息:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  BuildInfo? _buildInfo;

  @override
  void initState() {
    super.initState();
    _loadBuildInfo();
  }

  Future<void> _loadBuildInfo() async {
    _buildInfo = await BuildInfoService.getBuildInfo();
    if (mounted) {
      setState(() {});
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Web Build Info Example'),
        ),
        body: Center(
          child: _buildInfo != null
              ? Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    Text('Build Time: ${_buildInfo!.buildTime}'),
                    Text('Git Commit: ${_buildInfo!.gitCommitHash}'),
                    Text('Git Branch: ${_buildInfo!.gitBranch}'),
                    // 你可以根据需要添加更多的构建信息字段
                  ],
                )
              : CircularProgressIndicator(),
        ),
      ),
    );
  }
}
  1. 配置构建脚本(可选)

如果你希望在构建过程中自动注入一些信息(例如Git提交哈希),你可能需要配置你的构建脚本。这通常涉及到在build.yaml文件中添加一些配置,或者在你的构建流程中使用自定义脚本来生成这些信息。不过,这超出了build_info_web插件本身的功能范围,并且通常依赖于你的构建环境和工具链。

请注意,build_info_web插件的具体使用方式和功能可能会随着版本的更新而变化。因此,建议查阅最新的官方文档以获取最准确的信息。

以上示例展示了如何在Flutter Web应用中集成和使用build_info_web插件来获取和显示构建信息。希望这对你有所帮助!

回到顶部