Drift Database Instrumentation

Learn more about the Sentry Drift Database Instrumentation for the Flutter SDK.

此功能当前处于 Beta 阶段。Beta 功能仍在开发中,可能存在 bug。我们意识到其中的讽刺意味。

(New in version 7.13.1)

Drift is a library for easily managing SQLite databases within Flutter applications. The sentry_drift package provides Drift support for database performance instrumentation and allows you to track the performance of your queries.

The created spans will be attached to the transaction on the scope - if no transaction is on the scope the Drift span will not be sent to Sentry.

Before starting, ensure:

  1. The Sentry Flutter SDK is initialized. Learn more here.
  2. Tracing is set up. Learn more here.

Add the sentry_drift dependency to install the Drift database instrumentation.

pubspec.yaml
Copied
dependencies:
sentry_flutter: ^8.13.0
sentry_drift: ^8.13.0

Inject SentryQueryExecutor into a Drift database instance:

Copied
import 'package:drift/native.dart';
import 'package:sentry_drift/sentry_drift.dart';

final executor = SentryQueryExecutor(
  () => NativeDatabase.memory(), // You can also provide your own database opener
  databaseName: 'my_db_name',
);
final database = AppDatabase(executor); // AppDatabase is an example of the auto-generated database class by Drift.

Copied
import 'package:drift/drift.dart';
import 'package:drift/native.dart';
import 'package:sentry/sentry.dart';
import 'package:sentry_drift/sentry_drift.dart';

import 'your_database.dart';

Future<void> driftTest() async {
  final tr = Sentry.startTransaction(
    'driftTest',
    'op',
    bindToScope: true
  );
  final executor = SentryQueryExecutor(
    () => NativeDatabase.memory(),
    databaseName: 'your_db_name',
  );
  final db = AppDatabase(executor);

  await db.into(db.todoItems).insert(
        TodoItemsCompanion.insert(
          title: 'This is a test title',
          content: 'test',
        ),
      );

  final items = await db.select(db.todoItems).get();

  await db.close();

  await tr.finish(status: const SpanStatus.ok());
}

To view the recorded transaction, log into sentry.io and open your project. Clicking Performance will open a page with transactions, where you can select the just recorded transaction with the name driftTest.