Flutter环境监测插件environmentalist的使用

Flutter环境监测插件environmentalist的使用

environmentalist 插件用于收集平台信息以供调试目的。目前,它主要用于服务器环境的详细信息。

你可以添加更多已知客户端属性和常见的云平台信息。

该插件最初用于解决 Cloud Pub/Sub 中的“幽灵订阅者”问题。通过要求每个订阅者将其环境信息记录到某个中央日志中,可以找到僵尸订阅者并调试基础设施。

请注意,此包中的具体属性可能会发生变化。请仅依赖于能够被人类后期处理的信息转储功能。

使用方法

import 'dart:convert';
import 'package:environmentalist/environmentalist.dart';

Future<void> main() async {
  // 获取环境信息
  final env = await Environmentalist.get();
  
  // 将环境信息转为JSON字符串
  final str = jsonEncode(env.toJson());
  
  // 打印环境信息
  print(str);
}

返回的对象可以序列化为JSON并反序列化回来。

各种环境的输出示例

本地环境
{
  "googleApplicationCredentials": {
    "path": "/path/to/service/account/key",
    "clientEmail": "name@project-id.iam.gserviceaccount.com",
    "clientId": "123",
    "privateKeyId": "456",
    "projectId": "project-id",
    "type": "service_account"
  },
  "ips": [
    "192.168.1.2"
  ],
  "pid": 33784,
  "platform": "macos",
  "variables": { /* 环境变量,键值对 */ },
  "version": "3.4.0 (stable) (Mon May 6 07:59:58 2024 -0700) on \"macos_arm64\""
}
Google Kubernetes Engine (GKE)
{
  "ips": [
    "10.28.1.2"
  ],
  "kubernetes": {
    "hostname": "my-deployment-name-d9c5d4dc-qf524"
  },
  "pid": 1,
  "platform": "linux",
  "variables": { /* 环境变量,键值对 */ },
  "version": "3.4.0 (stable) (Mon May 6 07:59:58 2024 -0700) on \"linux_x64\""
}
GitHub Workflow
{
  "github": {
    "actor": "alexeyinkin",
    "eventName": "workflow_dispatch",
    "job": "_",
    "ref": "refs/heads/main",
    "repository": "alexeyinkin/repository-name",
    "runAttempt": 1,
    "runId": 9206310416,
    "runNumber": 127,
    "sha": "8bb284fa40a240192fb95f92540dffeb68ce22f6",
    "triggeringActor": "alexeyinkin",
    "workflow": ".github/workflows/deploy_prod.yaml",
    "workflowRef": "alexeyinkin/repository-name/.github/workflows/deploy_prod.yaml@refs/heads/main",
    "workflowSha": "8bb284fa40a240192fb95f92540dffeb68ce22f6"
  },
  "googleApplicationCredentials": {
    "path": "/home/runner/work/repository-name/repository-name/gha-creds-db27f0e3297f59e0.json",
    "audience": "//iam.googleapis.com/projects/123/locations/global/workloadIdentityPools/github/providers/github",
    "serviceAccountImpersonationUrl": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/name@project-id.iam.gserviceaccount.com:generateAccessToken",
    "subjectTokenType": "urn:ietf:params:oauth:token-type:jwt",
    "type": "external_account"
  },
  "ips": [
    "10.1.2.3",
    "172.17.4.5"
  ],
  "pid": 2076,
  "platform": "linux",
  "variables": { /* 环境变量,键值对 */ },
  "version": "3.4.0 (stable) (Mon May 6 07:59:58 2024 -0700) on \"linux_x64\""
}

更多关于Flutter环境监测插件environmentalist的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter环境监测插件environmentalist的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用environmentalist插件来监测环境信息的示例代码。environmentalist插件能够帮助你获取设备的硬件和软件信息,如操作系统版本、设备型号等。

步骤 1: 添加依赖

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

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

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

步骤 2: 导入插件

在你的Dart文件中导入environmentalist插件:

import 'package:environmentalist/environmentalist.dart';

步骤 3: 获取设备信息

你可以使用Environmentalist类来获取设备的各种信息。以下是一个简单的示例,展示如何获取并打印设备信息:

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Environmentalist Example'),
        ),
        body: Center(
          child: FutureBuilder<Map<String, dynamic>>(
            future: Environmentalist.deviceInfo,
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.done) {
                if (snapshot.hasError) {
                  return Text('Error: ${snapshot.error}');
                } else {
                  Map<String, dynamic> deviceInfo = snapshot.data!;
                  return Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      Text('Device Brand: ${deviceInfo['brand']}'),
                      Text('Device Model: ${deviceInfo['model']}'),
                      Text('OS Version: ${deviceInfo['osVersion']}'),
                      Text('Screen Size: ${deviceInfo['screenSize']}'),
                      // 根据需要添加更多信息
                    ],
                  );
                }
              } else {
                return CircularProgressIndicator();
              }
            },
          ),
        ),
      ),
    );
  }
}

解释

  1. 添加依赖:在pubspec.yaml文件中添加environmentalist依赖。
  2. 导入插件:在需要获取设备信息的Dart文件中导入environmentalist包。
  3. 获取设备信息:使用Environmentalist.deviceInfo异步方法获取设备信息,并在UI中显示。

注意事项

  • 确保你使用的是最新版本的environmentalist插件,因为API可能会随着版本的更新而变化。
  • 根据需要添加更多的设备信息字段,Environmentalist.deviceInfo返回的Map包含了设备的多种信息,你可以根据需要选择显示哪些信息。

通过上述步骤,你就可以在Flutter项目中轻松地使用environmentalist插件来获取并显示设备信息了。

回到顶部