fix: 登录成功跳转 mod: 退出登录提示

This commit is contained in:
guozhigq
2023-08-19 11:33:39 +08:00
parent 40849cb68d
commit 9db76e99db
5 changed files with 43 additions and 14 deletions

View File

@ -17,7 +17,7 @@ class ApiInterceptor extends Interceptor {
handler.next(options);
}
Box setting = GStrorage.setting;
Box user = GStrorage.user;
@override
void onResponse(Response response, ResponseInterceptorHandler handler) {
@ -29,7 +29,7 @@ class ApiInterceptor extends Interceptor {
final uri = Uri.parse(locations.first);
final accessKey = uri.queryParameters['access_key'];
final mid = uri.queryParameters['mid'];
setting.put(UserBoxKey.accessKey, {'mid': mid, 'value': accessKey});
user.put(UserBoxKey.accessKey, {'mid': mid, 'value': accessKey});
}
}
}

View File

@ -18,6 +18,7 @@ import 'package:pilipala/utils/storage.dart';
/// 返回{'status': bool, 'data': List}
/// view层根据 status 判断渲染逻辑
class VideoHttp {
static Box user = GStrorage.user;
static Box setting = GStrorage.setting;
// 首页推荐视频
@ -61,7 +62,7 @@ class VideoHttp {
'pull': freshIdx == 0 ? 'true' : 'false',
'appkey': Constants.appKey,
'access_key':
setting.get(UserBoxKey.accessKey, defaultValue: {})['value'] ?? ''
user.get(UserBoxKey.accessKey, defaultValue: {})['value'] ?? ''
},
);
if (res.data['code'] == 0) {

View File

@ -1,3 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:hive/hive.dart';
import 'package:pilipala/http/init.dart';
@ -30,12 +32,36 @@ class SettingController extends GetxController {
}
loginOut() async {
await Request.cookieManager.cookieJar.deleteAll();
await Get.find<MineController>().resetUserInfo();
userLogin.value = user.get(UserBoxKey.userLogin) ?? false;
userInfoCache.put('userInfoCache', null);
HomeController homeCtr = Get.find<HomeController>();
homeCtr.updateLoginStatus(false);
SmartDialog.show(
useSystem: true,
animationType: SmartAnimationType.centerFade_otherSlide,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('提示'),
content: const Text('确认要退出登录吗'),
actions: [
TextButton(
onPressed: () => SmartDialog.dismiss(),
child: const Text('点错了'),
),
TextButton(
onPressed: () async {
await Request.cookieManager.cookieJar.deleteAll();
await Get.find<MineController>().resetUserInfo();
userLogin.value = user.get(UserBoxKey.userLogin) ?? false;
userInfoCache.put('userInfoCache', null);
HomeController homeCtr = Get.find<HomeController>();
homeCtr.updateLoginStatus(false);
user.put(UserBoxKey.accessKey, {'mid': -1, 'value': ''});
Request.dio.options.headers['cookie'] = '';
SmartDialog.dismiss().then((value) => Get.back());
},
child: const Text('确认'),
)
],
);
},
);
}
// 开启关闭震动反馈

View File

@ -4,7 +4,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:hive/hive.dart';
import 'package:pilipala/http/constants.dart';
import 'package:pilipala/http/init.dart';
import 'package:pilipala/http/user.dart';
import 'package:pilipala/pages/dynamics/index.dart';
@ -13,7 +12,6 @@ import 'package:pilipala/pages/mine/index.dart';
import 'package:pilipala/pages/rcmd/controller.dart';
import 'package:pilipala/utils/cookie.dart';
import 'package:pilipala/utils/storage.dart';
import 'package:webview_cookie_manager/webview_cookie_manager.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebviewController extends GetxController {
@ -31,17 +29,17 @@ class WebviewController extends GetxController {
type = Get.parameters['type']!;
pageTitle = Get.parameters['pageTitle']!;
webviewInit();
if (type == 'login') {
controller.clearCache();
controller.clearLocalStorage();
WebViewCookieManager().clearCookies();
controller.setUserAgent(Request().headerUa('mob'));
}
webviewInit();
}
webviewInit() {
controller
..setUserAgent(Request().headerUa('mob'))
..setJavaScriptMode(JavaScriptMode.unrestricted)
..setNavigationDelegate(
NavigationDelegate(
@ -52,8 +50,9 @@ class WebviewController extends GetxController {
},
onPageStarted: (String url) {},
// 加载完成
onPageFinished: (String url) async {
onUrlChange: (UrlChange urlChange) async {
loadShow.value = false;
String url = urlChange.url ?? '';
if (type == 'login' &&
(url.startsWith(
'https://passport.bilibili.com/web/sso/exchange_cookie') ||

View File

@ -7,6 +7,9 @@ class SetCookie {
var cookies = await WebviewCookieManager().getCookies(HttpString.baseUrl);
await Request.cookieManager.cookieJar
.saveFromResponse(Uri.parse(HttpString.baseUrl), cookies);
var cookieString =
cookies.map((cookie) => '${cookie.name}=${cookie.value}').join('; ');
Request.dio.options.headers['cookie'] = cookieString;
cookies = await WebviewCookieManager().getCookies(HttpString.baseApiUrl);
await Request.cookieManager.cookieJar