Flutter性能监控与网络请求插件dynatrace_flutter_plugin_dio的使用

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

Flutter性能监控与网络请求插件dynatrace_flutter_plugin_dio的使用

简介

Dynatrace Flutter Plugin 支持通过 dynatrace_flutter_plugin_dio 插件来增强对 Dio HTTP 客户端的监控。该插件允许自动标记和计时通过 Dio 发起的网络请求,从而在 Dynatrace 中进行详细的性能分析。

要求

  • Dynatrace Flutter Plugin
  • Flutter 版本 >= 1.12.0
  • Dart 版本 >= 2.15
  • Dio 版本 >= 5.0.0
  • Gradle: >= 5.x
  • Android API Level >= 21
  • iOS SDK >= 12

使用方法

基本使用

首先需要导入必要的包,并初始化 Dio 实例:

import 'package:dynatrace_flutter_plugin_dio/dynatrace_flutter_plugin_dio.dart';
import 'package:dynatrace_flutter_plugin/dynatrace_flutter_plugin.dart';

final dio = Dio();
dio.instrument();

创建一个用户操作并关联到 Dio 请求中:

void _dioRequestWithAction() async {
  final dio = Dio();
  dio.instrument();

  var url = 'https://dynatrace.com';
  DynatraceRootAction dioAction = Dynatrace().enterAction('Dio Action - $url');

  try {
    await dio.get(url);
  } catch (error) {
    // 错误处理
  } finally {
    dioAction.leaveAction();
  }
}

如果未创建用户操作,插件会自动创建一个名为 “Dio Request” 的用户操作,并将请求包含在其瀑布分析中。

请求和响应大小计算

默认情况下,插件会报告请求和响应的字节数。但是,某些情况下可能需要自定义设置以确保准确性:

Map<String, String> _myNewDefaultHeaders = {
  "User-Agent": "Dart/X.X (dart:io)"
};
DynatraceClientAdapterOptions _options = DynatraceClientAdapterOptions(
  _myNewDefaultHeaders,
  exclusionList: ['url-to-exclude.com']
);

final dio = Dio();
dio.instrument(options: _options);

示例 Demo

以下是一个完整的 Flutter 应用示例,展示了如何集成 dynatrace_flutter_plugin_dio 插件:

import 'package:dio/dio.dart';
import 'package:dynatrace_flutter_plugin_dio/dynatrace_flutter_plugin_dio.dart';
import 'package:dynatrace_flutter_plugin/dynatrace_flutter_plugin.dart';
import 'package:flutter/material.dart';

main() {
  // 配置 Dynatrace 插件,请参考官方文档
  Dynatrace().start(MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Dynatrace Dio Example'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  void _dioRequestWithAction() async {
    final dio = Dio();
    dio.instrument();

    var url = 'https://dynatrace.com';
    DynatraceRootAction dioAction = Dynatrace().enterAction('Dio Action - $url');

    try {
      await dio.get(url);
    } catch (error) {
      // 错误处理
    } finally {
      dioAction.leaveAction();
    }
  }

  void _dioRequestWithoutAction() async {
    final dio = Dio();
    dio.instrument();

    try {
      await dio.get('https://dynatrace.com');
    } catch (error) {
      // 错误处理
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'Dio Request Examples',
            ),
            FloatingActionButton(
              onPressed: _dioRequestWithAction,
              tooltip: 'Dio Request With Action',
              child: const Icon(Icons.add),
            ),
            FloatingActionButton(
              onPressed: _dioRequestWithoutAction,
              tooltip: 'Dio Request Without Action',
              child: const Icon(Icons.check),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter性能监控与网络请求插件dynatrace_flutter_plugin_dio的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter性能监控与网络请求插件dynatrace_flutter_plugin_dio的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中,性能监控和网络请求监控是确保应用稳定性和用户体验的重要部分。dynatrace_flutter_plugin_dio 是一个可以将 Dynatrace 监控能力集成到 Flutter 应用中的插件,特别是用于监控基于 dio 库的网络请求。以下是如何在 Flutter 项目中使用这个插件的代码示例。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  dio: ^4.0.0 # 请根据需要选择最新版本
  dynatrace_flutter_plugin_dio: ^x.y.z # 替换为最新版本号

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

2. 初始化插件

在你的 Flutter 应用的入口文件(通常是 main.dart)中,初始化 Dynatrace 插件并配置 dio 客户端。

import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'package:dynatrace_flutter_plugin_dio/dynatrace_flutter_plugin_dio.dart';

void main() {
  // 初始化 Dynatrace 插件(替换为实际的 Dynatrace 配置文件)
  DynatraceFlutterPlugin.init(
    beaconUrl: 'https://<your-beacon-url>/beacon',
    appName: 'YourAppName',
    appVersion: '1.0.0',
    deviceId: 'unique-device-id', // 确保这个ID在设备上是唯一的
  );

  // 创建 Dio 客户端并应用 Dynatrace 拦截器
  final Dio dio = Dio()
    ..interceptors.add(DynatraceDioInterceptor());

  runApp(MyApp(dio));
}

class MyApp extends StatelessWidget {
  final Dio dio;

  MyApp(this.dio);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(dio: dio),
    );
  }
}

class HomeScreen extends StatefulWidget {
  final Dio dio;

  HomeScreen({required this.dio});

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

class _HomeScreenState extends State<HomeScreen> {
  void _makeNetworkRequest() async {
    try {
      Response response = await widget.dio.get('https://jsonplaceholder.typicode.com/posts/1');
      print(response.data);
    } catch (e) {
      print(e);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Dynatrace Flutter Plugin Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _makeNetworkRequest,
          child: Text('Make Network Request'),
        ),
      ),
    );
  }
}

3. 运行应用

确保你的 Dynatrace beacon URL 和其他配置是正确的,然后运行你的 Flutter 应用。当你点击按钮发起网络请求时,Dynatrace 将会捕获并监控这个请求,包括请求的详情、响应时间等。

注意事项

  • 确保你的 Dynatrace beacon URL 是正确的,并且你有权限访问这个 beacon。
  • 替换 unique-device-id 为实际设备的唯一标识符,这有助于在 Dynatrace 中区分不同的设备。
  • 根据你的需求调整 appNameappVersion
  • 监控到的数据会在 Dynatrace 平台上展示,你可以在那里查看和分析应用的性能和网络请求。

通过上述步骤,你就可以在 Flutter 应用中集成 dynatrace_flutter_plugin_dio 插件,实现性能监控和网络请求监控。

回到顶部