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

67 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
/// Confirmation dialog widget
///
/// Displays a confirmation dialog with customizable title, content, and buttons
class ConfirmDialog extends StatelessWidget {
final String title;
final String content;
final String confirmText;
final String cancelText;
final bool isDangerous;
const ConfirmDialog({
super.key,
required this.title,
required this.content,
this.confirmText = '确认',
this.cancelText = '取消',
this.isDangerous = false,
});
@override
Widget build(BuildContext context) {
return AlertDialog(
title: Text(title),
content: Text(content),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(false),
child: Text(cancelText),
),
TextButton(
onPressed: () => Navigator.of(context).pop(true),
style: isDangerous
? TextButton.styleFrom(
foregroundColor: Theme.of(context).colorScheme.error,
)
: null,
child: Text(confirmText),
),
],
);
}
/// Show confirmation dialog
static Future<bool> show(
BuildContext context, {
required String title,
required String content,
String confirmText = '确认',
String cancelText = '取消',
bool isDangerous = false,
}) async {
final result = await showDialog<bool>(
context: context,
builder: (context) => ConfirmDialog(
title: title,
content: content,
confirmText: confirmText,
cancelText: cancelText,
isDangerous: isDangerous,
),
);
return result ?? false;
}
}