From e1f7aa3be32bf270979c3f9f31c8276a60e01d3e Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Mon, 12 Feb 2024 22:00:20 +0100 Subject: [PATCH] Fix crash in devtools schema validator (#2888) --- .../lib/src/schema_validator.dart | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extras/drift_devtools_extension/lib/src/schema_validator.dart b/extras/drift_devtools_extension/lib/src/schema_validator.dart index cd46d74f..107cb12b 100644 --- a/extras/drift_devtools_extension/lib/src/schema_validator.dart +++ b/extras/drift_devtools_extension/lib/src/schema_validator.dart @@ -60,9 +60,9 @@ class SchemaVerifier extends AutoDisposeAsyncNotifier { for (final row in await database .select('SELECT name, sql FROM sqlite_schema;', [])) { final name = row['name'] as String; - final sql = row['sql'] as String; + final sql = row['sql'] as String?; - if (!isInternalElement(name, virtualTables)) { + if (!isInternalElement(name, virtualTables) && sql != null) { actual.add(Input(name, sql)); } } @@ -95,9 +95,9 @@ class SchemaVerifier extends AutoDisposeAsyncNotifier { for (final row in newDatabase.select('SELECT name, sql FROM sqlite_schema;', [])) { final name = row['name'] as String; - final sql = row['sql'] as String; + final sql = row['sql'] as String?; - if (!isInternalElement(name, virtuals)) { + if (!isInternalElement(name, virtuals) && sql != null) { inputs.add(Input(name, sql)); } } @@ -136,8 +136,8 @@ class DatabaseSchemaCheck extends ConsumerWidget { TextSpan(text: message), ], )), - AsyncError(:var error) => - Text('The schema could not be validated due to an error: $error'), + AsyncError(:var error, :var stackTrace) => Text( + 'The schema could not be validated due to an error: $error, ${stackTrace}'), _ => Text.rich(TextSpan( text: 'By validating your schema, you can ensure that the current ' 'state of the database in your app (after migrations ran) '