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 a96c1726..1f9b1dd7 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,15 +119,17 @@ 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); } } 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']); }