Files
AutoJudge-Flutter/lib/widgets/error_dialog.dart
2025-11-13 09:14:49 +08:00

66 lines
1.5 KiB
Dart

import 'package:flutter/material.dart';
/// Error dialog widget
///
/// Displays an error message with an icon and optional action button
class ErrorDialog extends StatelessWidget {
final String title;
final String message;
final String? actionText;
final VoidCallback? onAction;
const ErrorDialog({
super.key,
required this.title,
required this.message,
this.actionText,
this.onAction,
});
@override
Widget build(BuildContext context) {
return AlertDialog(
icon: Icon(
Icons.error_outline,
size: 48,
color: Theme.of(context).colorScheme.error,
),
title: Text(title),
content: Text(message),
actions: [
if (actionText != null && onAction != null)
TextButton(
onPressed: () {
Navigator.of(context).pop();
onAction!();
},
child: Text(actionText!),
),
TextButton(
onPressed: () => Navigator.of(context).pop(),
child: const Text('关闭'),
),
],
);
}
/// Show error dialog
static Future<void> show(
BuildContext context, {
required String title,
required String message,
String? actionText,
VoidCallback? onAction,
}) {
return showDialog(
context: context,
builder: (context) => ErrorDialog(
title: title,
message: message,
actionText: actionText,
onAction: onAction,
),
);
}
}