NativeDatabase.memory constructor

NativeDatabase.memory({
  1. bool logStatements = false,
  2. DatabaseSetup? setup,
  3. bool cachePreparedStatements = _cacheStatementsByDefault,
})

Creates an in-memory database won't persist its changes on disk.

If logStatements is true (defaults to false), generated sql statements will be printed before executing. This can be useful for debugging.

The cachePreparedStatements flag (defaults to false) controls whether drift will cache prepared statement objects, which improves performance as sqlite3 doesn't have to parse statements that are frequently used multiple times. This will be the default in the next minor drift version.

The optional setup function can be used to perform a setup just after the database is opened, before drift is fully ready. This can be used to add custom user-defined sql functions or to provide encryption keys in SQLCipher implementations.

By default, drift runs migrations defined in your database class to create tables when the database is first opened or to alter when when your schema changes. This uses the user_version sqlite3 pragma, which is compared against the schemaVersion getter of the database. If you want to manage migrations independently or don't need them at all, you can disable migrations in drift with the enableMigrations parameter.

Implementation

factory NativeDatabase.memory({
  bool logStatements = false,
  DatabaseSetup? setup,
  bool cachePreparedStatements = _cacheStatementsByDefault,
}) {
  return NativeDatabase._(
    _NativeDelegate(
      null,
      setup,
      // Disabling migrations makes no sense for in-memory databases, which
      // would always be empty otherwise. They will also not be read-only, so
      // what's the point...
      true,
      cachePreparedStatements,
    ),
    logStatements,
  );
}