Commit 91ce530c26e617d18f976bb7710f0eb0a16fa09e

Authored by wdn127929
1 parent c6b76629

微信注册监听,login页dispose的时候,cancel掉监听(没有remove掉监听,多次注册导致,重复调用监听)

@@ -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 {