feat: implement dialog callback

This commit is contained in:
Kingtous
2023-05-08 12:34:19 +08:00
parent 19f81ad317
commit 77fa807b57
55 changed files with 734 additions and 554 deletions

View File

@@ -557,7 +557,7 @@ void window_on_top(int? id) {
}
typedef DialogBuilder = CustomAlertDialog Function(
StateSetter setState, void Function([dynamic]) close);
StateSetter setState, void Function([dynamic]) close, BuildContext context);
class Dialog<T> {
OverlayEntry? entry;
@@ -660,7 +660,7 @@ class OverlayDialogManager {
child: StatefulBuilder(builder: (context, setState) {
return Listener(
onPointerUp: (_) => innerClicked = true,
child: builder(setState, close),
child: builder(setState, close, overlayState.context),
);
})));
});
@@ -680,7 +680,7 @@ class OverlayDialogManager {
VoidCallback? onCancel}) {
final tag = _tagCount.toString();
_tagCount++;
show((setState, close) {
show((setState, close, context) {
cancel() {
dismissAll();
if (onCancel != null) {
@@ -938,7 +938,7 @@ void msgBox(String id, String type, String title, String text, String link,
buttons.insert(0, dialogButton('JumpLink', onPressed: jumplink));
}
dialogManager.show(
(setState, close) => CustomAlertDialog(
(setState, close, context) => CustomAlertDialog(
title: null,
content: SelectionArea(child: msgboxContent(type, title, text)),
actions: buttons,
@@ -1011,7 +1011,7 @@ Widget msgboxContent(String type, String title, String text) {
void msgBoxCommon(OverlayDialogManager dialogManager, String title,
Widget content, List<Widget> buttons,
{bool hasCancel = true}) {
dialogManager.show((setState, close) => CustomAlertDialog(
dialogManager.show((setState, close, context) => CustomAlertDialog(
title: Text(
translate(title),
style: TextStyle(fontSize: 21),