Commit 91ce530c26e617d18f976bb7710f0eb0a16fa09e
1 parent
c6b76629
微信注册监听,login页dispose的时候,cancel掉监听(没有remove掉监听,多次注册导致,重复调用监听)
Showing
1 changed file
with
10 additions
and
3 deletions
| @@ -60,6 +60,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -60,6 +60,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 60 | late CreateStoreModel createStoreModel; | 60 | late CreateStoreModel createStoreModel; |
| 61 | Fluwx fluwx = Fluwx(); | 61 | Fluwx fluwx = Fluwx(); |
| 62 | 62 | ||
| 63 | + late Function(WeChatResponse) responseListener; | ||
| 64 | + | ||
| 63 | @override | 65 | @override |
| 64 | void initState() { | 66 | void initState() { |
| 65 | // TODO: implement initState | 67 | // TODO: implement initState |
| @@ -86,6 +88,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -86,6 +88,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 86 | @override | 88 | @override |
| 87 | void dispose() { | 89 | void dispose() { |
| 88 | super.dispose(); | 90 | super.dispose(); |
| 91 | + fluwx.removeSubscriber(responseListener); | ||
| 92 | + | ||
| 89 | WidgetsBinding.instance.removeObserver(this); | 93 | WidgetsBinding.instance.removeObserver(this); |
| 90 | } | 94 | } |
| 91 | 95 | ||
| @@ -100,6 +104,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -100,6 +104,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 100 | var result = await fluwx.isWeChatInstalled; | 104 | var result = await fluwx.isWeChatInstalled; |
| 101 | if (result != null && result) { | 105 | if (result != null && result) { |
| 102 | App.isInstallWx = true; | 106 | App.isInstallWx = true; |
| 107 | + | ||
| 108 | + _getWxCode(); | ||
| 103 | } else { | 109 | } else { |
| 104 | App.isInstallWx = false; | 110 | App.isInstallWx = false; |
| 105 | } | 111 | } |
| @@ -159,7 +165,6 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -159,7 +165,6 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 159 | }); | 165 | }); |
| 160 | } else { | 166 | } else { |
| 161 | _checkWechat(); | 167 | _checkWechat(); |
| 162 | - _getWxCode(); | ||
| 163 | } | 168 | } |
| 164 | } | 169 | } |
| 165 | 170 | ||
| @@ -178,7 +183,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -178,7 +183,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 178 | 183 | ||
| 179 | ///获取微信登录code | 184 | ///获取微信登录code |
| 180 | _getWxCode() { | 185 | _getWxCode() { |
| 181 | - fluwx.addSubscriber((res) { | 186 | + responseListener = (res) { |
| 182 | if (res is WeChatAuthResponse && res.errCode == 0) { | 187 | if (res is WeChatAuthResponse && res.errCode == 0) { |
| 183 | LogUtil.v("code:" + res.code!); | 188 | LogUtil.v("code:" + res.code!); |
| 184 | // Loading.showLoading(context); | 189 | // Loading.showLoading(context); |
| @@ -186,7 +191,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -186,7 +191,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 186 | } else { | 191 | } else { |
| 187 | // Utils.showToast(res.errStr??"登录失败,请稍后重试"); | 192 | // Utils.showToast(res.errStr??"登录失败,请稍后重试"); |
| 188 | } | 193 | } |
| 189 | - }); | 194 | + }; |
| 195 | + fluwx.addSubscriber(responseListener); | ||
| 190 | } | 196 | } |
| 191 | 197 | ||
| 192 | //获取用户信息 | 198 | //获取用户信息 |
| @@ -234,6 +240,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | @@ -234,6 +240,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver { | ||
| 234 | // if (model != null) { | 240 | // if (model != null) { |
| 235 | // createStoreModel.storeInfo = StoreInfo(); | 241 | // createStoreModel.storeInfo = StoreInfo(); |
| 236 | // createStoreModel.storeInfo.phone = model.phone; | 242 | // createStoreModel.storeInfo.phone = model.phone; |
| 243 | + // fluwx.removeSubscriber(responseListener); | ||
| 237 | createStoreModel.storeInfo = StoreInfo(); | 244 | createStoreModel.storeInfo = StoreInfo(); |
| 238 | NavigatorUtil.goIfNeedCreateStorePage(context); | 245 | NavigatorUtil.goIfNeedCreateStorePage(context); |
| 239 | // } else { | 246 | // } else { |
-
Please register or login to post a comment