Skip to main content
Flutter SDK 基于原生 iOS / Android SDK 封装,通过 flashcat_flutter_plugin 提供 RUM 能力。初始化后,SDK 会把应用中的视图、用户操作、网络请求、错误和崩溃事件上报到 Flashduty RUM,并使用 source: "flutter" 标识数据来源。
当前 SDK 版本为 0.1.3,支持 iOS 和 Android 平台(不支持 Flutter Web)。Dart 类名以 Datadog* 开头(如 DatadogSdkDatadogConfiguration),站点枚举为 FlashcatSite。暂不支持 Logs、Session Replay,以及 dio / gql / grpc 拦截包。

前提条件

接入前,请先完成以下准备:
  • 在 Flashduty 控制台创建或选择一个 RUM 应用,并获取 Application IDClient Token
  • 确认应用可以访问 https://browser.flashcat.cloud/api/v2/rum
  • Flutter SDK ≥ 3.27.0,Dart ≥ 3.6.0;iOS 部署目标 ≥ 12.0,Android minSdkVersion ≥ 23
  • 在应用启动早期(main() 中)完成 SDK 初始化

安装 SDK

pubspec.yaml 中添加 flashcat_flutter_plugin,然后执行 flutter pub get
pubspec.yaml
请使用 0.1.3 或更高版本。低于该版本时,flutter build apk --release(包括崩溃符号化所需的 --obfuscate 构建)会失败于 R8,报 Missing class org.bouncycastle.jsse.BCSSLParameters0.1.3 起所需的 ProGuard 规则随包下发,应用侧无需额外配置。

初始化 SDK

建议在 main() 中、runApp 之前完成初始化。使用 DatadogSdk.runApp 启动应用时,SDK 会自动接管 FlutterError.onErrorPlatformDispatcher.instance.onError,无需手动接线即可采集未处理异常。
main.dart
请不要在客户端代码中使用服务端密钥。clientToken 只用于客户端 RUM 数据上报,applicationId 用于归属 RUM 应用数据。
如果你需要在 runApp 之外自行控制启动流程,也可以手动初始化,但需要自己接线错误采集:

采集页面视图

MaterialApp(或 CupertinoApp)添加 DatadogNavigationObserver,SDK 会把 Navigator 的路由切换自动记录为 RUM 视图。
DatadogNavigationObserver 的构造函数使用命名参数 datadogSdk:。默认使用路由的 settings.name 作为视图名称,可以通过 viewInfoExtractor 回调自定义视图名或过滤路由。
对于没有使用命名路由的场景,可以用 DatadogNavigationObserverProvider 配合 DatadogRouteAwareMixin 手动管理视图。

采集用户操作

在 RUM 配置中 trackFrustrations 默认开启。用 RumUserActionDetector 包裹应用子树后,SDK 会自动识别点击等交互并生成 action 事件;你也可以手动记录操作。

采集网络请求

自动网络采集由独立的 flashcat_tracking_http_client 包提供,通过配置对象上的扩展方法 enableHttpTracking() 开启。它会全局替换 HttpClient,把 dart:io / http 请求记录为 RUM resource,并对 firstPartyHosts 命中的域名注入 W3C 追踪头。
pubspec.yaml

关联用户信息

登录后,你可以设置当前用户。SDK 会把用户字段写入后续 RUM 事件的 usr 对象。
用户退出登录时清除用户信息:

上报错误

使用 DatadogSdk.runApp 时未处理异常会被自动采集。你也可以手动上报捕获到的异常:
崩溃与错误堆栈需要上传符号文件才能还原到源码位置。Flutter symbols、iOS dSYM、Android mapping 文件通过 FlashCat CLI 上传;每次改动代码都会生成新的构建产物,需要重新上传对应的符号文件。详见 高级配置

验证接入

完成接入后,可以按以下方式验证:
  1. 在初始化时临时设置 DatadogSdk.instance.sdkVerbosity = CoreLoggerLevel.debug,通过控制台日志查看 SDK 上报行为
  2. 运行应用并触发页面切换、点击、网络请求或手动错误
  3. 在 Flashduty RUM 应用中筛选 source:flutter,确认出现 view、action、resource 或 error 事件
  4. 对网络请求检查后端是否收到 W3C traceparent

下一步

高级配置

配置采样率、隐私同意、事件过滤、追踪和符号文件上传。

兼容性

了解支持的平台、Flutter 版本、伴生包和当前限制。

数据收集

查看 SDK 自动和手动采集的事件类型、字段与上报行为。