import 'package:flutter/material.dart'; class ConfigDialog extends StatelessWidget { final String title; final String content; final TextStyle? contentStyle; final String confirmText; final String cancelText; final bool showCancel; final void Function()? onConfirm; final void Function()? onCancel; const ConfigDialog({ super.key, this.title = "", required this.content, this.contentStyle, this.confirmText = '确定', this.cancelText = '取消', this.showCancel = true, this.onConfirm, this.onCancel, }); @override Widget build(BuildContext context) { Color borderColor = Theme.of(context).colorScheme.surfaceContainer; return AlertDialog( actionsPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 5), contentPadding: const EdgeInsets.symmetric(horizontal: 0, vertical: 0), elevation: 0, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), title: Visibility( visible: title.isNotEmpty, child: Container( margin: const EdgeInsets.only(bottom: 15), child: Text( title, textAlign: TextAlign.center, style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w700), ), ), ), content: Container( padding: const EdgeInsets.only(bottom: 20, left: 20, right: 20), decoration: BoxDecoration( border: Border( bottom: BorderSide(width: 1, color: borderColor), ), ), child: Text(content, textAlign: TextAlign.center, style: contentStyle), ), actions: [ SizedBox( height: 40, child: Row( children: [ if (showCancel) ...[ Expanded( child: TextButton( onPressed: onCancel, child: Text( cancelText, textAlign: TextAlign.center, ), ), ), Container( width: 1, margin: EdgeInsets.symmetric(horizontal: 10), color: borderColor, ), ], Expanded( child: TextButton( onPressed: onConfirm, child: Text( confirmText, style: TextStyle( color: Theme.of(context).primaryColor, ), ), ), ), ], ), ), ], ); } }