From 31f87bd24cb8f6fff9860dde2ff0833a0412092e Mon Sep 17 00:00:00 2001 From: guozhigq Date: Wed, 2 Oct 2024 22:27:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E7=99=BB=E5=BD=95=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/http/login.dart | 23 ++++++++++--- lib/pages/login/controller.dart | 10 +++++- lib/pages/login/view.dart | 59 ++++++++++++++++++++++----------- 3 files changed, 67 insertions(+), 25 deletions(-) diff --git a/lib/http/login.dart b/lib/http/login.dart index 2437b72a..71d61b3f 100644 --- a/lib/http/login.dart +++ b/lib/http/login.dart @@ -244,12 +244,25 @@ class LoginHttp { ), ); if (res.data['code'] == 0) { - return { - 'status': true, - 'data': res.data['data'], - }; + if (res.data['data']['status'] == 0) { + return { + 'status': true, + 'data': res.data['data'], + }; + } else { + return { + 'status': false, + 'code': 1, + 'data': res.data['data'], + 'msg': res.data['data']['message'], + }; + } } else { - return {'status': false, 'data': [], 'msg': res.data['message']}; + return { + 'status': false, + 'data': [], + 'msg': res.data['message'], + }; } } diff --git a/lib/pages/login/controller.dart b/lib/pages/login/controller.dart index fbb06e2f..9e7fb339 100644 --- a/lib/pages/login/controller.dart +++ b/lib/pages/login/controller.dart @@ -45,6 +45,7 @@ class LoginPageController extends GetxController { RxInt validSeconds = 180.obs; Timer? validTimer; late String qrcodeKey; + RxBool passwordVisible = false.obs; // 监听pageView切换 void onPageChange(int index) { @@ -128,7 +129,14 @@ class LoginPageController extends GetxController { if (res['status']) { await LoginUtils.confirmLogin('', null); } else { - SmartDialog.showToast(res['msg']); + await SmartDialog.showToast(res['msg']); + if (res.containsKey('code') && res['code'] == 1) { + Get.toNamed('/webview', parameters: { + 'url': res['data']['data']['url'], + 'type': 'url', + 'pageTitle': '登录验证', + }); + } } } else { SmartDialog.showToast(webKeyRes['msg']); diff --git a/lib/pages/login/view.dart b/lib/pages/login/view.dart index 85a8adf0..4fe21792 100644 --- a/lib/pages/login/view.dart +++ b/lib/pages/login/view.dart @@ -269,25 +269,46 @@ class _LoginPageState extends State { ), Container( margin: const EdgeInsets.only(top: 38, bottom: 15), - child: TextFormField( - controller: _loginPageCtr.passwordTextController, - focusNode: _loginPageCtr.passwordTextFieldNode, - keyboardType: TextInputType.visiblePassword, - decoration: InputDecoration( - isDense: true, - labelText: '输入密码', - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(6.0), - ), - ), - // 校验用户名 - validator: (v) { - return v!.trim().isNotEmpty ? null : "密码不能为空"; - }, - onSaved: (val) { - print(val); - }, - ), + child: Obx(() => TextFormField( + controller: + _loginPageCtr.passwordTextController, + focusNode: + _loginPageCtr.passwordTextFieldNode, + keyboardType: TextInputType.visiblePassword, + obscureText: + _loginPageCtr.passwordVisible.value, + decoration: InputDecoration( + isDense: true, + labelText: '输入密码', + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(6.0), + ), + suffixIcon: IconButton( + icon: Icon( + _loginPageCtr.passwordVisible.value + ? Icons.visibility + : Icons.visibility_off, + color: Theme.of(context) + .colorScheme + .primary, + ), + onPressed: () { + _loginPageCtr.passwordVisible.value = + !_loginPageCtr + .passwordVisible.value; + }, + ), + ), + // 校验用户名 + validator: (v) { + return v!.trim().isNotEmpty + ? null + : "密码不能为空"; + }, + onSaved: (val) { + print(val); + }, + )), ), const Spacer(), Row( From f1441ac97e19e8c4b52b079fd8275e005985564d Mon Sep 17 00:00:00 2001 From: guozhigq Date: Fri, 4 Oct 2024 11:36:17 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E6=94=B6=E8=97=8F=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/fav/view.dart | 108 +++++++++++++++------------ lib/pages/fav_detail/controller.dart | 8 +- lib/pages/fav_detail/view.dart | 26 ++++--- lib/pages/fav_edit/controller.dart | 2 +- 4 files changed, 82 insertions(+), 62 deletions(-) diff --git a/lib/pages/fav/view.dart b/lib/pages/fav/view.dart index f6164609..317ba4d5 100644 --- a/lib/pages/fav/view.dart +++ b/lib/pages/fav/view.dart @@ -79,56 +79,68 @@ class _FavPageState extends State { const SizedBox(width: 14), ], ), - body: FutureBuilder( - future: _futureBuilderFuture, - builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.done) { - Map? data = snapshot.data; - if (data != null && data['status']) { - return Obx( - () => ListView.builder( - controller: scrollController, - itemCount: _favController.favFolderList.length, - itemBuilder: (context, index) { - return FavItem( - favFolderItem: _favController.favFolderList[index], - isOwner: _favController.isOwner.value, - ); - }, - ), - ); - } else { - return CustomScrollView( - physics: const NeverScrollableScrollPhysics(), - slivers: [ - HttpError( - errMsg: data?['msg'] ?? '请求异常', - btnText: data?['code'] == -101 ? '去登录' : null, - fn: () { - if (data?['code'] == -101) { - RoutePush.loginRedirectPush(); - } else { - setState(() { - _futureBuilderFuture = - _favController.queryFavFolder(); - }); - } - }, - ), - ], - ); - } - } else { - // 骨架屏 - return ListView.builder( - itemBuilder: (context, index) { - return const VideoCardHSkeleton(); - }, - itemCount: 10, - ); - } + body: RefreshIndicator( + onRefresh: () async { + _favController.hasMore.value = true; + _favController.currentPage = 1; + setState(() { + _futureBuilderFuture = _favController.queryFavFolder(type: 'init'); + }); }, + child: _buildBody(), ), ); } + + Widget _buildBody() { + return FutureBuilder( + future: _futureBuilderFuture, + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + Map? data = snapshot.data; + if (data != null && data['status']) { + return Obx( + () => ListView.builder( + controller: scrollController, + itemCount: _favController.favFolderList.length, + itemBuilder: (context, index) { + return FavItem( + favFolderItem: _favController.favFolderList[index], + isOwner: _favController.isOwner.value, + ); + }, + ), + ); + } else { + return CustomScrollView( + physics: const NeverScrollableScrollPhysics(), + slivers: [ + HttpError( + errMsg: data?['msg'] ?? '请求异常', + btnText: data?['code'] == -101 ? '去登录' : null, + fn: () { + if (data?['code'] == -101) { + RoutePush.loginRedirectPush(); + } else { + setState(() { + _futureBuilderFuture = _favController.queryFavFolder(); + }); + } + }, + ), + ], + ); + } + } else { + // 骨架屏 + return ListView.builder( + itemBuilder: (context, index) { + return const VideoCardHSkeleton(); + }, + itemCount: 10, + ); + } + }, + ); + } } diff --git a/lib/pages/fav_detail/controller.dart b/lib/pages/fav_detail/controller.dart index 4d639bff..ba722481 100644 --- a/lib/pages/fav_detail/controller.dart +++ b/lib/pages/fav_detail/controller.dart @@ -10,6 +10,7 @@ import 'package:pilipala/utils/utils.dart'; class FavDetailController extends GetxController { FavFolderItemData? item; + RxString title = ''.obs; int? mediaId; late String heroTag; @@ -24,6 +25,7 @@ class FavDetailController extends GetxController { @override void onInit() { item = Get.arguments; + title.value = item!.title!; if (Get.parameters.keys.isNotEmpty) { mediaId = int.parse(Get.parameters['mediaId']!); heroTag = Get.parameters['heroTag']!; @@ -117,16 +119,18 @@ class FavDetailController extends GetxController { } onEditFavFolder() async { - Get.toNamed( + var res = await Get.toNamed( '/favEdit', arguments: { 'mediaId': mediaId.toString(), 'title': item!.title, 'intro': item!.intro, 'cover': item!.cover, - 'privacy': item!.attr, + 'privacy': [23, 1].contains(item!.attr) ? 1 : 0, }, ); + title.value = res['title']; + print(title); } Future toViewPlayAll() async { diff --git a/lib/pages/fav_detail/view.dart b/lib/pages/fav_detail/view.dart index 8f0d3cd1..d4c10d31 100644 --- a/lib/pages/fav_detail/view.dart +++ b/lib/pages/fav_detail/view.dart @@ -80,9 +80,11 @@ class _FavDetailPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - _favDetailController.item!.title!, - style: Theme.of(context).textTheme.titleMedium, + Obx( + () => Text( + _favDetailController.title.value, + style: Theme.of(context).textTheme.titleMedium, + ), ), Text( '共${_favDetailController.mediaCount}条视频', @@ -156,14 +158,16 @@ class _FavDetailPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 4), - Text( - _favDetailController.item!.title!, - style: TextStyle( - fontSize: Theme.of(context) - .textTheme - .titleMedium! - .fontSize, - fontWeight: FontWeight.bold), + Obx( + () => Text( + _favDetailController.title.value, + style: TextStyle( + fontSize: Theme.of(context) + .textTheme + .titleMedium! + .fontSize, + fontWeight: FontWeight.bold), + ), ), const SizedBox(height: 4), Text( diff --git a/lib/pages/fav_edit/controller.dart b/lib/pages/fav_edit/controller.dart index 4772caee..bf310389 100644 --- a/lib/pages/fav_edit/controller.dart +++ b/lib/pages/fav_edit/controller.dart @@ -56,7 +56,7 @@ class FavEditController extends GetxController { ); if (res['status']) { SmartDialog.showToast('编辑成功'); - Get.back(); + Get.back(result: {'title': title}); } else { SmartDialog.showToast(res['msg']); }