😋 初始化仓库
This commit is contained in:
66
lib/widgets/confirm_dialog.dart
Normal file
66
lib/widgets/confirm_dialog.dart
Normal file
@@ -0,0 +1,66 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user