张延森 3 anos atrás
pai
commit
1f448aedc8
3 arquivos alterados com 41 adições e 31 exclusões
  1. 1
    1
      lib/main.dart
  2. 23
    9
      lib/widgets/Modal.dart
  3. 17
    21
      pubspec.lock

+ 1
- 1
lib/main.dart Ver arquivo

@@ -30,7 +30,7 @@ class MyApp extends StatelessWidget {
30 30
       designSize: const Size(375, 812),
31 31
       minTextAdapt: true,
32 32
       splitScreenMode: true,
33
-      builder: (_) {
33
+      builder: (context , child) {
34 34
         return GetMaterialApp(
35 35
           localizationsDelegates: const [
36 36
             GlobalMaterialLocalizations.delegate,

+ 23
- 9
lib/widgets/Modal.dart Ver arquivo

@@ -1,3 +1,5 @@
1
+import 'dart:ffi';
2
+
1 3
 import 'package:flutter/cupertino.dart';
2 4
 import 'package:flutter/material.dart';
3 5
 import 'package:flutter/widgets.dart';
@@ -9,26 +11,37 @@ typedef ModalFunc = dynamic Function();
9 11
 /// func 函数如果返回 bool 值, 则只有 true 的情况下才默认关闭弹窗
10 12
 /// 如果返回 Future , 则只有正常结束的时候 才关闭弹窗
11 13
 /// 其余情况, 都默认关闭弹窗
12
-void _handleFunc(ModalFunc? func) {
14
+void _handleFunc(ModalFunc? func, bool lazy) {
15
+  // 是否立即关闭
16
+  _close (bool canClose) {
17
+    if (canClose) {
18
+      _closeModal();
19
+    }
20
+  };
21
+
22
+  // 如果 lazy 是 true 则不会立即关闭
23
+  _close(!lazy);
24
+
13 25
   if (null != func) {
14 26
     dynamic res = func();
15 27
     if (res.runtimeType == bool) {
16
-      if (res) {
17
-        _closeModal();
28
+      if (res && lazy) {
29
+        _close(lazy);
18 30
       }
19 31
     } else if (res is Future) {
20
-      res.then((_) => _closeModal());
32
+      res.then((_) => _close(lazy));
21 33
     } else {
22
-      _closeModal();
34
+      _close(lazy);
23 35
     }
24 36
   } else {
25
-    _closeModal();
37
+    _close(lazy);
26 38
   }
27 39
 }
28 40
 
29 41
 /// 打开一个 dialog
30 42
 void showDialog(
31 43
     {required String title,
44
+      lazy = false,
32 45
     String? message,
33 46
     Widget? content,
34 47
     ModalFunc? onConfirm,
@@ -38,14 +51,15 @@ void showDialog(
38 51
     title: title,
39 52
     message: message,
40 53
     content: content,
41
-    onConfirm: () => _handleFunc(onConfirm),
42
-    onCancel: () => _handleFunc(onCancel),
54
+    onConfirm: () => _handleFunc(onConfirm, lazy),
55
+    onCancel: () => _handleFunc(onCancel, lazy),
43 56
   ));
44 57
 }
45 58
 
46 59
 /// 打开一个 alert
47 60
 void showAlert(
48 61
     {required String title,
62
+      bool lazy = false,
49 63
     String? message,
50 64
     Widget? content,
51 65
     ModalFunc? onConfirm}) {
@@ -54,7 +68,7 @@ void showAlert(
54 68
     title: title,
55 69
     message: message,
56 70
     content: content,
57
-    onConfirm: () => _handleFunc(onConfirm),
71
+    onConfirm: () => _handleFunc(onConfirm, lazy),
58 72
   ));
59 73
 }
60 74
 

+ 17
- 21
pubspec.lock Ver arquivo

@@ -7,7 +7,7 @@ packages:
7 7
       name: _fe_analyzer_shared
8 8
       url: "https://pub.flutter-io.cn"
9 9
     source: hosted
10
-    version: "39.0.0"
10
+    version: "40.0.0"
11 11
   amap_flutter_base:
12 12
     dependency: transitive
13 13
     description:
@@ -35,14 +35,14 @@ packages:
35 35
       name: analyzer
36 36
       url: "https://pub.flutter-io.cn"
37 37
     source: hosted
38
-    version: "4.0.0"
38
+    version: "4.1.0"
39 39
   args:
40 40
     dependency: transitive
41 41
     description:
42 42
       name: args
43 43
       url: "https://pub.flutter-io.cn"
44 44
     source: hosted
45
-    version: "2.3.0"
45
+    version: "2.3.1"
46 46
   async:
47 47
     dependency: transitive
48 48
     description:
@@ -168,7 +168,7 @@ packages:
168 168
       name: ffi
169 169
       url: "https://pub.flutter-io.cn"
170 170
     source: hosted
171
-    version: "1.1.2"
171
+    version: "1.2.1"
172 172
   file:
173 173
     dependency: transitive
174 174
     description:
@@ -185,7 +185,7 @@ packages:
185 185
     dependency: "direct main"
186 186
     description:
187 187
       name: flutter_easyloading
188
-      url: "https://pub.dartlang.org"
188
+      url: "https://pub.flutter-io.cn"
189 189
     source: hosted
190 190
     version: "3.0.3"
191 191
   flutter_lints:
@@ -206,25 +206,21 @@ packages:
206 206
       name: flutter_plugin_android_lifecycle
207 207
       url: "https://pub.flutter-io.cn"
208 208
     source: hosted
209
-    version: "2.0.5"
209
+    version: "2.0.6"
210 210
   flutter_screenutil:
211 211
     dependency: "direct main"
212 212
     description:
213 213
       name: flutter_screenutil
214 214
       url: "https://pub.flutter-io.cn"
215 215
     source: hosted
216
-<<<<<<< HEAD
217
-    version: "5.4.0+1"
216
+    version: "5.5.3+1"
218 217
   flutter_spinkit:
219 218
     dependency: transitive
220 219
     description:
221 220
       name: flutter_spinkit
222
-      url: "https://pub.dartlang.org"
221
+      url: "https://pub.flutter-io.cn"
223 222
     source: hosted
224 223
     version: "5.1.0"
225
-=======
226
-    version: "5.5.2"
227
->>>>>>> b052c991e6c96dc1b28c3fa153d55d36d0e0272a
228 224
   flutter_test:
229 225
     dependency: "direct dev"
230 226
     description: flutter
@@ -269,7 +265,7 @@ packages:
269 265
       name: http_parser
270 266
       url: "https://pub.flutter-io.cn"
271 267
     source: hosted
272
-    version: "4.0.0"
268
+    version: "4.0.1"
273 269
   intl:
274 270
     dependency: transitive
275 271
     description:
@@ -353,49 +349,49 @@ packages:
353 349
       name: path_provider
354 350
       url: "https://pub.flutter-io.cn"
355 351
     source: hosted
356
-    version: "2.0.9"
352
+    version: "2.0.10"
357 353
   path_provider_android:
358 354
     dependency: transitive
359 355
     description:
360 356
       name: path_provider_android
361 357
       url: "https://pub.flutter-io.cn"
362 358
     source: hosted
363
-    version: "2.0.13"
359
+    version: "2.0.14"
364 360
   path_provider_ios:
365 361
     dependency: transitive
366 362
     description:
367 363
       name: path_provider_ios
368 364
       url: "https://pub.flutter-io.cn"
369 365
     source: hosted
370
-    version: "2.0.8"
366
+    version: "2.0.9"
371 367
   path_provider_linux:
372 368
     dependency: transitive
373 369
     description:
374 370
       name: path_provider_linux
375 371
       url: "https://pub.flutter-io.cn"
376 372
     source: hosted
377
-    version: "2.1.5"
373
+    version: "2.1.6"
378 374
   path_provider_macos:
379 375
     dependency: transitive
380 376
     description:
381 377
       name: path_provider_macos
382 378
       url: "https://pub.flutter-io.cn"
383 379
     source: hosted
384
-    version: "2.0.5"
380
+    version: "2.0.6"
385 381
   path_provider_platform_interface:
386 382
     dependency: transitive
387 383
     description:
388 384
       name: path_provider_platform_interface
389 385
       url: "https://pub.flutter-io.cn"
390 386
     source: hosted
391
-    version: "2.0.3"
387
+    version: "2.0.4"
392 388
   path_provider_windows:
393 389
     dependency: transitive
394 390
     description:
395 391
       name: path_provider_windows
396 392
       url: "https://pub.flutter-io.cn"
397 393
     source: hosted
398
-    version: "2.0.5"
394
+    version: "2.0.6"
399 395
   permission_handler:
400 396
     dependency: "direct main"
401 397
     description:
@@ -575,7 +571,7 @@ packages:
575 571
       name: yaml
576 572
       url: "https://pub.flutter-io.cn"
577 573
     source: hosted
578
-    version: "3.1.0"
574
+    version: "3.1.1"
579 575
 sdks:
580 576
   dart: ">=2.16.1 <3.0.0"
581 577
   flutter: ">=2.8.1"