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); handler.next(options);
} }
Box setting = GStrorage.setting; Box user = GStrorage.user;
@override @override
void onResponse(Response response, ResponseInterceptorHandler handler) { void onResponse(Response response, ResponseInterceptorHandler handler) {
@ -29,7 +29,7 @@ class ApiInterceptor extends Interceptor {
final uri = Uri.parse(locations.first); final uri = Uri.parse(locations.first);
final accessKey = uri.queryParameters['access_key']; final accessKey = uri.queryParameters['access_key'];
final mid = uri.queryParameters['mid']; 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} /// 返回{'status': bool, 'data': List}
/// view层根据 status 判断渲染逻辑 /// view层根据 status 判断渲染逻辑
class VideoHttp { class VideoHttp {
static Box user = GStrorage.user;
static Box setting = GStrorage.setting; static Box setting = GStrorage.setting;
// 首页推荐视频 // 首页推荐视频
@ -61,7 +62,7 @@ class VideoHttp {
'pull': freshIdx == 0 ? 'true' : 'false', 'pull': freshIdx == 0 ? 'true' : 'false',
'appkey': Constants.appKey, 'appkey': Constants.appKey,
'access_key': 'access_key':
setting.get(UserBoxKey.accessKey, defaultValue: {})['value'] ?? '' user.get(UserBoxKey.accessKey, defaultValue: {})['value'] ?? ''
}, },
); );
if (res.data['code'] == 0) { 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:get/get.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:pilipala/http/init.dart'; import 'package:pilipala/http/init.dart';
@ -30,12 +32,36 @@ class SettingController extends GetxController {
} }
loginOut() async { loginOut() async {
await Request.cookieManager.cookieJar.deleteAll(); SmartDialog.show(
await Get.find<MineController>().resetUserInfo(); useSystem: true,
userLogin.value = user.get(UserBoxKey.userLogin) ?? false; animationType: SmartAnimationType.centerFade_otherSlide,
userInfoCache.put('userInfoCache', null); builder: (BuildContext context) {
HomeController homeCtr = Get.find<HomeController>(); return AlertDialog(
homeCtr.updateLoginStatus(false); 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:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:pilipala/http/constants.dart';
import 'package:pilipala/http/init.dart'; import 'package:pilipala/http/init.dart';
import 'package:pilipala/http/user.dart'; import 'package:pilipala/http/user.dart';
import 'package:pilipala/pages/dynamics/index.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/pages/rcmd/controller.dart';
import 'package:pilipala/utils/cookie.dart'; import 'package:pilipala/utils/cookie.dart';
import 'package:pilipala/utils/storage.dart'; import 'package:pilipala/utils/storage.dart';
import 'package:webview_cookie_manager/webview_cookie_manager.dart';
import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter/webview_flutter.dart';
class WebviewController extends GetxController { class WebviewController extends GetxController {
@ -31,17 +29,17 @@ class WebviewController extends GetxController {
type = Get.parameters['type']!; type = Get.parameters['type']!;
pageTitle = Get.parameters['pageTitle']!; pageTitle = Get.parameters['pageTitle']!;
webviewInit();
if (type == 'login') { if (type == 'login') {
controller.clearCache(); controller.clearCache();
controller.clearLocalStorage(); controller.clearLocalStorage();
WebViewCookieManager().clearCookies(); WebViewCookieManager().clearCookies();
controller.setUserAgent(Request().headerUa('mob'));
} }
webviewInit();
} }
webviewInit() { webviewInit() {
controller controller
..setUserAgent(Request().headerUa('mob'))
..setJavaScriptMode(JavaScriptMode.unrestricted) ..setJavaScriptMode(JavaScriptMode.unrestricted)
..setNavigationDelegate( ..setNavigationDelegate(
NavigationDelegate( NavigationDelegate(
@ -52,8 +50,9 @@ class WebviewController extends GetxController {
}, },
onPageStarted: (String url) {}, onPageStarted: (String url) {},
// 加载完成 // 加载完成
onPageFinished: (String url) async { onUrlChange: (UrlChange urlChange) async {
loadShow.value = false; loadShow.value = false;
String url = urlChange.url ?? '';
if (type == 'login' && if (type == 'login' &&
(url.startsWith( (url.startsWith(
'https://passport.bilibili.com/web/sso/exchange_cookie') || 'https://passport.bilibili.com/web/sso/exchange_cookie') ||

View File

@ -7,6 +7,9 @@ class SetCookie {
var cookies = await WebviewCookieManager().getCookies(HttpString.baseUrl); var cookies = await WebviewCookieManager().getCookies(HttpString.baseUrl);
await Request.cookieManager.cookieJar await Request.cookieManager.cookieJar
.saveFromResponse(Uri.parse(HttpString.baseUrl), cookies); .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); cookies = await WebviewCookieManager().getCookies(HttpString.baseApiUrl);
await Request.cookieManager.cookieJar await Request.cookieManager.cookieJar