From 2a9d75e67556286da37d721ed7314409ed155da5 Mon Sep 17 00:00:00 2001 From: Weller <1812208341@qq.com> Date: Thu, 22 Oct 2020 10:37:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0loading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dart_tool/package_config.json | 10 +++---- lib/dialog/loading/loading.dart | 36 +++++++++++++------------- lib/dialog/loading/loading_dialog.dart | 4 ++- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index d0640e1..f77227e 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -165,7 +165,7 @@ }, { "name": "flutter_native_image", - "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_native_image-0.0.5+2", + "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/flutter_native_image-0.0.5+3", "packageUri": "lib/", "languageVersion": "1.19" }, @@ -465,7 +465,7 @@ }, { "name": "sqflite", - "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/sqflite-1.3.1+1", + "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/sqflite-1.3.1+2", "packageUri": "lib/", "languageVersion": "2.7" }, @@ -537,13 +537,13 @@ }, { "name": "url_launcher", - "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher-5.7.5", + "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher-5.7.6", "packageUri": "lib/", "languageVersion": "2.1" }, { "name": "url_launcher_linux", - "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_linux-0.0.1+1", + "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/url_launcher_linux-0.0.1+3", "packageUri": "lib/", "languageVersion": "2.1" }, @@ -620,7 +620,7 @@ "languageVersion": "2.8" } ], - "generated": "2020-10-17T09:07:26.676256Z", + "generated": "2020-10-22T02:18:13.447793Z", "generator": "pub", "generatorVersion": "2.8.2" } diff --git a/lib/dialog/loading/loading.dart b/lib/dialog/loading/loading.dart index e980131..94428de 100644 --- a/lib/dialog/loading/loading.dart +++ b/lib/dialog/loading/loading.dart @@ -3,31 +3,31 @@ import 'package:zhiying_base_widget/dialog/loading/loading_dialog.dart'; // loading弹窗 class Loading { - static LoadingDialog _dialog; - static BuildContext _context; + static OverlayEntry _overlayEntry; - static Future show(BuildContext context, { + static Future show( + BuildContext context, { String msg, }) async { dismiss(); + _overlayEntry = new OverlayEntry(builder: (context) { + return GestureDetector( + onTap: dismiss, + child: Container( + color: Colors.black.withOpacity(0.5), + child: LoadingDialog( + message: msg, + ), + ), + ); + }); - _context = context; - _dialog = LoadingDialog( - message: msg, - ); - var result = await showDialog(context: context, child: _dialog); - _context = null; - _dialog = null; - return result; + //插入到 Overlay中显示 OverlayEntry + Overlay.of(context).insert(_overlayEntry); } static dismiss() { - if (_dialog != null && _context != null) { - if (Navigator.canPop(_context)) { - Navigator.pop(_context); - } - } - _context = null; - _dialog = null; + _overlayEntry?.remove(); + _overlayEntry = null; } } diff --git a/lib/dialog/loading/loading_dialog.dart b/lib/dialog/loading/loading_dialog.dart index 151cf48..e674465 100644 --- a/lib/dialog/loading/loading_dialog.dart +++ b/lib/dialog/loading/loading_dialog.dart @@ -10,7 +10,9 @@ class LoadingDialog extends StatelessWidget { Widget build(BuildContext context) { return GestureDetector( onTap: () { - Navigator.pop(context); + if (Navigator.canPop(context)) { + Navigator.pop(context); + } }, child: Scaffold( backgroundColor: Colors.transparent,