sentry_flutterとは
sentry_flutterは、Flutterアプリケーションで発生するエラーをキャプチャし、Sentry.ioに送信するためのSDKです。
sentry_flutter | Flutter package
Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supporte...
使い方
インストール
まず、Sentry.ioでアカウントを作成し、DSNを取得します。
dependencies:
sentry_flutter: ^8.2.0
Sentry SDKの初期化
取得したDSNを使用して、Sentry SDKを初期化します。
import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
Future<void> main() async {
await SentryFlutter.init(
(options) {
options.dsn = 'https://example@sentry.io/add-your-dsn-here';
},
// アプリの初期化
appRunner: () => runApp(MyApp()),
);
}
Flutter 3.3以前のバージョンで独自のエラーハンドラを使用する場合:
import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
Future<void> main() async {
runZonedGuarded(() async {
await SentryFlutter.init(
(options) {
options.dsn = 'https://example@sentry.io/add-your-dsn-here';
},
);
runApp(MyApp());
}, (exception, stackTrace) async {
await Sentry.captureException(exception, stackTrace: stackTrace);
});
}
ナビゲーションイベントのトラッキング
ナビゲーションイベントをトラッキングするために、SentryNavigatorObserver
をMaterialApp
、WidgetsApp
、CupertinoApp
に追加します。
import 'package:flutter/material.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
// ...
MaterialApp(
navigatorObservers: [
SentryNavigatorObserver(),
],
// 他のパラメータ
)
// ...
AssetBundlesのパフォーマンストレース
AssetBundlesのトレースをサポートするためのコードは以下の通りです。
runApp(
DefaultAssetBundle(
bundle: SentryAssetBundle(),
child: MyApp(),
),
);
これにより、DefaultAssetBundle.of(context)
を使用してアクセスされる全てのAssetBundleの使用がトレースされます。例えば、Image.asset
のようなFlutterの内部アクセスも含まれます。
HTTPイベントのトラッキング
詳細な指示はこちらを参照してください。
デバッグシンボルとソースマップのアップロード (Android, iOS/macOS, Web)
デバッグシンボルとソースマップは、SentryのIssue Detailsページに表示される情報を提供し、問題のトリアージを助けます。これらをSentryに提供する方法についての詳細はドキュメントを参照してください。
エラーをキャッチするためのヒント
try/catch
ブロックを使用します。Futures
のためのcatchError
ブロックを使用します。例はdart.devを参照してください。- Flutter固有のエラーは自動的にキャプチャされます。
- 現在のアイソレートのエラーは自動的にキャプチャされます(Webアプリを除く)。
- 独自のアイソレートのために、
isolate.addSentryErrorListener()
を呼び出してエラーリスナーを追加します。