155 lines
4.9 KiB
Dart
155 lines
4.9 KiB
Dart
import 'package:bruno/bruno.dart';
|
||
import 'package:flutter/material.dart';
|
||
|
||
class DialogUtils {
|
||
|
||
/// 弹出一个信息展示框
|
||
static void showMessage(BuildContext context, String title, String message, {String btnLabel = '确定'}) {
|
||
BrnDialogManager.showSingleButtonDialog(context,
|
||
label: btnLabel,
|
||
title: title,
|
||
message: message,
|
||
onTap: () {
|
||
Navigator.of(context).pop();
|
||
}
|
||
);
|
||
}
|
||
|
||
/// 展示一个信息列 , message 必须是 label 和 msg
|
||
static void showMessageList(BuildContext context, String title, List<dynamic> message, {String btnLabel = '确定'}) {
|
||
List<BrnInfoModal> msg = [];
|
||
for(var msgData in message) {
|
||
msg.add(BrnInfoModal(keyPart: " ${msgData["label"]}", valuePart: msgData["msg"].toString()));
|
||
}
|
||
BrnDialogManager.showSingleButtonDialog(context,
|
||
label: btnLabel,
|
||
title: title,
|
||
messageWidget: BrnPairInfoTable(
|
||
expandAtIndex: 4,
|
||
isFolded: false,
|
||
children: msg,
|
||
),
|
||
onTap: () {
|
||
Navigator.of(context).pop();
|
||
}
|
||
);
|
||
}
|
||
|
||
/// 弹出一个成功的提示框
|
||
static void showSuccessMessage(BuildContext context, String title, String message, {String btnLabel = '确定'}) {
|
||
BrnDialogManager.showSingleButtonDialog(context,
|
||
showIcon: true,
|
||
iconWidget: Image.asset("lib/images/ico/round_success.png"),
|
||
label: btnLabel,
|
||
title: title,
|
||
message: message,
|
||
onTap: () {
|
||
Navigator.of(context).pop();
|
||
}
|
||
);
|
||
}
|
||
|
||
/// 弹出一个警告提示框
|
||
static void showWarningMessage(BuildContext context, String title, String message, {String btnLabel = '确定'}) {
|
||
BrnDialogManager.showSingleButtonDialog(context,
|
||
showIcon: true,
|
||
iconWidget: Image.asset("lib/images/ico/round_warning.png"),
|
||
label: btnLabel,
|
||
title: title,
|
||
message: message,
|
||
onTap: () {
|
||
Navigator.of(context).pop();
|
||
}
|
||
);
|
||
}
|
||
|
||
/// 弹出一个错误提示框
|
||
static void showErrorMessage(BuildContext context, String title, String message, {String btnLabel = '确定'}) {
|
||
BrnDialogManager.showSingleButtonDialog(context,
|
||
showIcon: true,
|
||
iconWidget: Image.asset("lib/images/ico/round_error.png"),
|
||
label: btnLabel,
|
||
title: title,
|
||
message: message,
|
||
onTap: () {
|
||
Navigator.of(context).pop();
|
||
}
|
||
);
|
||
}
|
||
|
||
/// 弹出一个问题框
|
||
static void showConfirmMessage(BuildContext context, String title, String message, {Function()? cancel, Function()? confirm, String cancelLabel = '取消', String confirmBtn = '确定'}) {
|
||
BrnDialogManager.showConfirmDialog(context,
|
||
showIcon: true,
|
||
iconWidget: Image.asset("lib/images/ico/round_question.png"),
|
||
title: title,
|
||
confirm: confirmBtn,
|
||
cancel: cancelLabel,
|
||
message: message, onConfirm: () {
|
||
Navigator.of(context).pop();
|
||
if(confirm != null) {
|
||
confirm();
|
||
}
|
||
}, onCancel: () {
|
||
Navigator.of(context).pop();
|
||
if(cancel != null) {
|
||
cancel();
|
||
}
|
||
});
|
||
}
|
||
|
||
/// 展示一个输入框
|
||
static void showInputMessage(BuildContext context, String title, {String? hintText, String? message, Function()? cancel, Function(String)? confirm, String cancelLabel = '取消', String confirmBtn = '确定'}) {
|
||
BrnMiddleInputDialog(
|
||
title: title,
|
||
message: message,
|
||
hintText: hintText,
|
||
cancelText: cancelLabel,
|
||
confirmText: confirmBtn,
|
||
autoFocus: true,
|
||
maxLength: 1000,
|
||
maxLines: 1,
|
||
dismissOnActionsTap: false,
|
||
barrierDismissible: true,
|
||
onConfirm: (value) {
|
||
Navigator.pop(context);
|
||
if(confirm != null) {
|
||
confirm(value);
|
||
}
|
||
},
|
||
onCancel: () {
|
||
Navigator.pop(context);
|
||
if(cancel != null) {
|
||
cancel();
|
||
}
|
||
}).show(context);
|
||
}
|
||
|
||
/// 展示一个单选框
|
||
static void showSingleSelectDialog(BuildContext context, String title, List<String> conditions, {Function(int, String?)? onSubmitClick, String msg = "", String submitText = "确定"}) {
|
||
int selectedIndex = 0;
|
||
showDialog(
|
||
context: context,
|
||
builder: (_) => StatefulBuilder(
|
||
builder: (context, state) {
|
||
return BrnSingleSelectDialog(
|
||
isClose: true,
|
||
title: title,
|
||
messageText: msg,
|
||
checkedItem: conditions[selectedIndex],
|
||
submitText: submitText,
|
||
isCustomFollowScroll: true,
|
||
conditions: conditions,
|
||
onSubmitClick: (data) {
|
||
if(onSubmitClick != null) {
|
||
onSubmitClick(selectedIndex, data);
|
||
}
|
||
},
|
||
onItemClick: (BuildContext context, int index) {
|
||
selectedIndex = index;
|
||
});
|
||
}
|
||
));
|
||
}
|
||
|
||
} |