Commit 8fec4713d28b5787025b090ab1adfa6619a3cf04
1 parent
c4458dc6
feat:启动请求失败阻塞优化
Showing
1 changed file
with
20 additions
and
6 deletions
lib/app/splash_page.dart
| @@ -48,7 +48,7 @@ class _TransitionViewState extends State<TransitionView> { | @@ -48,7 +48,7 @@ class _TransitionViewState extends State<TransitionView> { | ||
| 48 | //Log.d('Splash读当前页面:$currentPageName'); | 48 | //Log.d('Splash读当前页面:$currentPageName'); |
| 49 | Log.d('Splash读本地, userEntity: $userEntity'); | 49 | Log.d('Splash读本地, userEntity: $userEntity'); |
| 50 | int apartInMilliseconds = 0; | 50 | int apartInMilliseconds = 0; |
| 51 | - // 阻塞获取系统配置信息 | 51 | + // 获取系统配置信息 |
| 52 | AppConfigHelper.getAppConfig(); | 52 | AppConfigHelper.getAppConfig(); |
| 53 | // 调一下接口判断一下有效性再往下 | 53 | // 调一下接口判断一下有效性再往下 |
| 54 | if (userEntity != null && userEntity.token != null) { | 54 | if (userEntity != null && userEntity.token != null) { |
| @@ -95,7 +95,9 @@ class _TransitionViewState extends State<TransitionView> { | @@ -95,7 +95,9 @@ class _TransitionViewState extends State<TransitionView> { | ||
| 95 | }); | 95 | }); |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | - Future<void> fetchNecessaryData(String userToken) async { | 98 | + Future<void> fetchNecessaryData(String userToken, |
| 99 | + {Completer<void>? completer}) async { | ||
| 100 | + completer ??= Completer<void>(); | ||
| 99 | // 获取用户信息 | 101 | // 获取用户信息 |
| 100 | try { | 102 | try { |
| 101 | UserEntity? userEntity = await UserDao.getUserInfo(); | 103 | UserEntity? userEntity = await UserDao.getUserInfo(); |
| @@ -105,7 +107,10 @@ class _TransitionViewState extends State<TransitionView> { | @@ -105,7 +107,10 @@ class _TransitionViewState extends State<TransitionView> { | ||
| 105 | Log.d('Splash重设token, userEntity: $userEntity'); | 107 | Log.d('Splash重设token, userEntity: $userEntity'); |
| 106 | UserUtil.saveUser(userEntity); | 108 | UserUtil.saveUser(userEntity); |
| 107 | } | 109 | } |
| 110 | + //todo 如果为null是否需要清除用户信息? | ||
| 111 | + completer.complete(); | ||
| 108 | } catch (e) { | 112 | } catch (e) { |
| 113 | + debugPrint('Splash获取用户信息异常:$e'); | ||
| 109 | //异常的话弹窗提示重试 | 114 | //异常的话弹窗提示重试 |
| 110 | showDialog( | 115 | showDialog( |
| 111 | context: context, | 116 | context: context, |
| @@ -118,13 +123,20 @@ class _TransitionViewState extends State<TransitionView> { | @@ -118,13 +123,20 @@ class _TransitionViewState extends State<TransitionView> { | ||
| 118 | content: const Text('网络异常,请检查网络后重试'), | 123 | content: const Text('网络异常,请检查网络后重试'), |
| 119 | actions: <Widget>[ | 124 | actions: <Widget>[ |
| 120 | TextButton( | 125 | TextButton( |
| 121 | - child: const Text('退出'), | ||
| 122 | - onPressed: () => AppConfigHelper.exitApp() | ||
| 123 | - ), | 126 | + child: const Text('退出'), |
| 127 | + onPressed: () => { | ||
| 128 | + // 关闭对话框并重试 | ||
| 129 | + Navigator.of(context).pop(), | ||
| 130 | + AppConfigHelper.exitApp(), | ||
| 131 | + completer?.complete(), | ||
| 132 | + }), | ||
| 124 | TextButton( | 133 | TextButton( |
| 125 | child: const Text('重试'), | 134 | child: const Text('重试'), |
| 126 | onPressed: () async { | 135 | onPressed: () async { |
| 127 | - fetchNecessaryData(userToken); | 136 | + // 关闭对话框并重试 |
| 137 | + Navigator.of(context).pop(); | ||
| 138 | + await fetchNecessaryData(userToken, completer: completer); | ||
| 139 | + completer?.complete(); | ||
| 128 | }, | 140 | }, |
| 129 | ), | 141 | ), |
| 130 | ], | 142 | ], |
| @@ -134,6 +146,8 @@ class _TransitionViewState extends State<TransitionView> { | @@ -134,6 +146,8 @@ class _TransitionViewState extends State<TransitionView> { | ||
| 134 | ); | 146 | ); |
| 135 | e.logE(); | 147 | e.logE(); |
| 136 | } | 148 | } |
| 149 | + // 等待completer完成,这会阻塞后续代码的执行,直到用户做出选择 | ||
| 150 | + await completer.future; | ||
| 137 | } | 151 | } |
| 138 | 152 | ||
| 139 | @override | 153 | @override |