@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
44import 'package:flutter_smart_dialog/src/data/base_controller.dart' ;
55import 'package:flutter_smart_dialog/src/data/smart_tag.dart' ;
66import 'package:flutter_smart_dialog/src/helper/dialog_proxy.dart' ;
7+ import 'package:flutter_smart_dialog/src/util/view_utils.dart' ;
78import 'package:flutter_smart_dialog/src/widget/attach_dialog_widget.dart' ;
89import 'package:flutter_smart_dialog/src/widget/smart_dialog_widget.dart' ;
910
@@ -104,23 +105,25 @@ class MainDialog {
104105 required VoidCallback ? onDismiss,
105106 required bool useSystem,
106107 }) {
107- _onDismiss = onDismiss;
108-
109- if (useSystem && DialogProxy .contextNavigator != null ) {
110- var tempWidget = _widget;
111- showDialog (
112- context: DialogProxy .contextNavigator! ,
113- barrierColor: Colors .transparent,
114- barrierDismissible: false ,
115- useSafeArea: false ,
116- routeSettings: RouteSettings (name: SmartTag .systemDialog),
117- builder: (BuildContext context) => tempWidget,
118- );
119- _widget = Container ();
120- }
121-
122- //refresh dialog
123- overlayEntry.markNeedsBuild ();
108+ ViewUtils .addRouteSafeUse (() {
109+ _onDismiss = onDismiss;
110+
111+ if (useSystem && DialogProxy .contextNavigator != null ) {
112+ var tempWidget = _widget;
113+ _widget = Container ();
114+ showDialog (
115+ context: DialogProxy .contextNavigator! ,
116+ barrierColor: Colors .transparent,
117+ barrierDismissible: false ,
118+ useSafeArea: false ,
119+ routeSettings: RouteSettings (name: SmartTag .systemDialog),
120+ builder: (BuildContext context) => tempWidget,
121+ );
122+ }
123+
124+ //refresh dialog
125+ overlayEntry.markNeedsBuild ();
126+ });
124127 }
125128
126129 Future <void > dismiss <T >({
0 commit comments