From 297974aaa69847adeac4e28f1d9401d7a82a49eb Mon Sep 17 00:00:00 2001 From: doodlezucc <electerminator@gmail.com> Date: Wed, 25 Oct 2023 12:25:55 +0200 Subject: [PATCH] improve error dialog --- lib/dialogs/error_dialog.dart | 25 +++++++++++++++++++++++-- lib/drawer/drawer.dart | 13 ++++++++++++- lib/timetable/weekday_header.dart | 2 +- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/lib/dialogs/error_dialog.dart b/lib/dialogs/error_dialog.dart index 083491c..cef68e2 100644 --- a/lib/dialogs/error_dialog.dart +++ b/lib/dialogs/error_dialog.dart @@ -6,13 +6,34 @@ class ErrorDialog extends StatelessWidget { const ErrorDialog({super.key, required this.title, required this.error}); + void onTapOK(BuildContext context) { + Navigator.of(context).pop(); + } + @override Widget build(BuildContext context) { return SimpleDialog( title: Text(title), children: [ - SimpleDialogOption( - child: Text('An error occurred: ${error.runtimeType}\n$error'), + SizedBox( + height: MediaQuery.of(context).size.height / 4, + child: SingleChildScrollView( + child: SimpleDialogOption( + child: Text('An error occurred: ${error.runtimeType}\n\n$error'), + ), + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () => onTapOK(context), + child: const Text('OK'), + ), + ], + ), ), ], ); diff --git a/lib/drawer/drawer.dart b/lib/drawer/drawer.dart index d1949cf..b2a4bc1 100644 --- a/lib/drawer/drawer.dart +++ b/lib/drawer/drawer.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import '../context.dart'; +import '../dialogs/error_dialog.dart'; import '../untis/class.dart'; import 'class_list_item.dart'; @@ -19,7 +20,17 @@ class _ClassDrawerState extends State<ClassDrawer> { @override void initState() { super.initState(); - fetchLectures(); + fetchLectures().onError((error, _) => _showErrorDialog(error)); + } + + void _showErrorDialog(Object? error) { + showDialog( + context: context, + builder: (context) => ErrorDialog( + title: 'Classes unavailable', + error: error, + ), + ); } Future<void> fetchLectures() async { diff --git a/lib/timetable/weekday_header.dart b/lib/timetable/weekday_header.dart index a2cc2ca..d5aa2b6 100644 --- a/lib/timetable/weekday_header.dart +++ b/lib/timetable/weekday_header.dart @@ -12,7 +12,7 @@ class WeekdayHeader extends StatelessWidget { ]; final DateTime date; - String get weekdayName => weekdayNames[date.weekday - 1]; + String get weekdayName => weekdayNames[date.weekday - 1].substring(0, 2); const WeekdayHeader({super.key, required this.date}); -- GitLab