Skip to content

Commit e6a3750

Browse files
committed
Fix error states for SQL console
1 parent e1ae6b7 commit e6a3750

File tree

3 files changed

+35
-8
lines changed

3 files changed

+35
-8
lines changed

demos/supabase-todolist-drift/lib/main.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:logging/logging.dart';
88

99
import 'navigation.dart';
1010
import 'supabase.dart';
11+
import 'utils/provider_observer.dart';
1112

1213
void main() async {
1314
Logger.root.level = Level.INFO;
@@ -29,7 +30,10 @@ void main() async {
2930
WidgetsFlutterBinding.ensureInitialized();
3031
await loadSupabase();
3132

32-
runApp(const ProviderScope(child: MyApp()));
33+
runApp(const ProviderScope(
34+
observers: [LoggingProviderObserver()],
35+
child: MyApp(),
36+
));
3337
}
3438

3539
class MyApp extends HookConsumerWidget {

demos/supabase-todolist-drift/lib/screens/sql_console.dart

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,15 @@ final class SqlConsolePage extends HookConsumerWidget {
4646
),
4747
),
4848
),
49-
Expanded(
49+
if (rows case AsyncData(:final value))
50+
Expanded(
51+
child: SingleChildScrollView(
52+
scrollDirection: Axis.horizontal,
5053
child: SingleChildScrollView(
51-
scrollDirection: Axis.horizontal,
52-
child: SingleChildScrollView(
53-
scrollDirection: Axis.vertical,
54-
child: ResultSetTable(data: rows.value),
55-
),
56-
))
54+
scrollDirection: Axis.vertical,
55+
child: ResultSetTable(data: value),
56+
),
57+
))
5758
],
5859
),
5960
);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import 'package:logging/logging.dart';
2+
import 'package:riverpod/riverpod.dart';
3+
4+
final class LoggingProviderObserver extends ProviderObserver {
5+
static final _log = Logger('provider');
6+
7+
const LoggingProviderObserver();
8+
9+
@override
10+
void didUpdateProvider(ProviderBase<Object?> provider, Object? previousValue,
11+
Object? newValue, ProviderContainer container) {
12+
if (newValue case AsyncError(:final error, :final stackTrace)) {
13+
_log.warning('$provider emitted async error', error, stackTrace);
14+
}
15+
}
16+
17+
@override
18+
void providerDidFail(ProviderBase<Object?> provider, Object error,
19+
StackTrace stackTrace, ProviderContainer container) {
20+
_log.warning('$provider threw exception', error, stackTrace);
21+
}
22+
}

0 commit comments

Comments
 (0)