diff --git a/lib/pages/dynamics_topic_rcmd/view.dart b/lib/pages/dynamics_topic_rcmd/view.dart index 1012a8465..0bcb0fc64 100644 --- a/lib/pages/dynamics_topic_rcmd/view.dart +++ b/lib/pages/dynamics_topic_rcmd/view.dart @@ -28,6 +28,7 @@ class _DynTopicRcmdPageState extends State { child: refreshIndicator( onRefresh: _controller.onRefresh, child: CustomScrollView( + physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverPadding( padding: EdgeInsets.only( diff --git a/lib/pages/live_dm_block/view.dart b/lib/pages/live_dm_block/view.dart index b714bca87..664116dad 100644 --- a/lib/pages/live_dm_block/view.dart +++ b/lib/pages/live_dm_block/view.dart @@ -129,9 +129,9 @@ class _LiveDmBlockPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (!isPortrait) title, + title, tabBar, - Expanded(child: view) + Expanded(child: view), ], ), ), diff --git a/lib/pages/live_room/widgets/chat.dart b/lib/pages/live_room/widgets/chat.dart index 637501e29..41f561824 100644 --- a/lib/pages/live_room/widgets/chat.dart +++ b/lib/pages/live_room/widgets/chat.dart @@ -97,18 +97,12 @@ class LiveRoomChat extends StatelessWidget { TextSpan _buildMsg(dynamic obj) { dynamic emots = obj['emots']; dynamic uemote = obj['uemote']; - List list = [ + List list = [ if (emots != null) ...emots.keys, if (uemote is Map) uemote['emoticon_unique'].replaceFirst('upower_', '') ]; if (list.isNotEmpty) { - list = list.map((e) { - return e.toString().replaceAllMapped( - RegExp(r'\[(.*?)\]'), - (match) => r'\[' + match.group(1)! + r'\]', - ); - }).toList(); - RegExp regExp = RegExp(list.join('|')); + RegExp regExp = RegExp(list.map(RegExp.escape).join('|')); final List spanChildren = []; (obj['text'] as String).splitMapJoin( regExp, diff --git a/lib/pages/member_audio/view.dart b/lib/pages/member_audio/view.dart index 88e8a0bd6..7d926bfab 100644 --- a/lib/pages/member_audio/view.dart +++ b/lib/pages/member_audio/view.dart @@ -35,6 +35,7 @@ class _MemberAudioState extends State return refreshIndicator( onRefresh: _controller.onRefresh, child: CustomScrollView( + physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverPadding( padding: EdgeInsets.only( diff --git a/lib/pages/member_coin_arc/view.dart b/lib/pages/member_coin_arc/view.dart index e92e02623..6be7813ed 100644 --- a/lib/pages/member_coin_arc/view.dart +++ b/lib/pages/member_coin_arc/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/video_card_v.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/member/coin_like_arc/item.dart'; import 'package:PiliPlus/pages/member_coin_arc/controller.dart'; @@ -43,18 +44,22 @@ class _MemberCoinArcPageState extends State { body: SafeArea( top: false, bottom: false, - child: CustomScrollView( - slivers: [ - SliverPadding( - padding: EdgeInsets.only( - top: StyleString.safeSpace - 5, - left: StyleString.safeSpace, - right: StyleString.safeSpace, - bottom: MediaQuery.paddingOf(context).bottom + 80, + child: refreshIndicator( + onRefresh: _ctr.onRefresh, + child: CustomScrollView( + physics: const AlwaysScrollableScrollPhysics(), + slivers: [ + SliverPadding( + padding: EdgeInsets.only( + top: StyleString.safeSpace - 5, + left: StyleString.safeSpace, + right: StyleString.safeSpace, + bottom: MediaQuery.paddingOf(context).bottom + 80, + ), + sliver: Obx(() => _buildBody(_ctr.loadingState.value)), ), - sliver: Obx(() => _buildBody(_ctr.loadingState.value)), - ), - ], + ], + ), ), ), ); diff --git a/lib/pages/member_comic/view.dart b/lib/pages/member_comic/view.dart index d8e02845c..b5303691c 100644 --- a/lib/pages/member_comic/view.dart +++ b/lib/pages/member_comic/view.dart @@ -34,6 +34,7 @@ class _MemberComicState extends State return refreshIndicator( onRefresh: _controller.onRefresh, child: CustomScrollView( + physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverPadding( padding: EdgeInsets.only( diff --git a/lib/pages/member_like_arc/view.dart b/lib/pages/member_like_arc/view.dart index bb7efafb0..4b64a89ca 100644 --- a/lib/pages/member_like_arc/view.dart +++ b/lib/pages/member_like_arc/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/video_card_v.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/member/coin_like_arc/item.dart'; import 'package:PiliPlus/pages/member_coin_arc/widgets/item.dart'; @@ -43,18 +44,22 @@ class _MemberLikeArcPageState extends State { body: SafeArea( top: false, bottom: false, - child: CustomScrollView( - slivers: [ - SliverPadding( - padding: EdgeInsets.only( - top: StyleString.safeSpace - 5, - left: StyleString.safeSpace, - right: StyleString.safeSpace, - bottom: MediaQuery.paddingOf(context).bottom + 80, + child: refreshIndicator( + onRefresh: _ctr.onRefresh, + child: CustomScrollView( + physics: const AlwaysScrollableScrollPhysics(), + slivers: [ + SliverPadding( + padding: EdgeInsets.only( + top: StyleString.safeSpace - 5, + left: StyleString.safeSpace, + right: StyleString.safeSpace, + bottom: MediaQuery.paddingOf(context).bottom + 80, + ), + sliver: Obx(() => _buildBody(_ctr.loadingState.value)), ), - sliver: Obx(() => _buildBody(_ctr.loadingState.value)), - ), - ], + ], + ), ), ), ); diff --git a/lib/pages/member_upower_rank/view.dart b/lib/pages/member_upower_rank/view.dart index b554e065e..ccbebf099 100644 --- a/lib/pages/member_upower_rank/view.dart +++ b/lib/pages/member_upower_rank/view.dart @@ -51,6 +51,7 @@ class _UpowerRankPageState extends State onRefresh: _controller.onRefresh, child: CustomScrollView( controller: _controller.scrollController, + physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverPadding( padding: EdgeInsets.only( diff --git a/lib/pages/video/introduction/pgc/controller.dart b/lib/pages/video/introduction/pgc/controller.dart index 8f392494b..79d74a8da 100644 --- a/lib/pages/video/introduction/pgc/controller.dart +++ b/lib/pages/video/introduction/pgc/controller.dart @@ -494,7 +494,7 @@ class PgcIntroController extends CommonIntroController { RxBool isFollowed = false.obs; RxInt followStatus = (-1).obs; - Future queryIsFollowed() async { + void queryIsFollowed() { // try { // var result = await Request().get( // 'https://www.bilibili.com/bangumi/play/ss$seasonId', @@ -513,8 +513,9 @@ class PgcIntroController extends CommonIntroController { ViewGrpc.view(bvid: bvid).then((res) { if (res.isSuccess) { ViewPgcAny view = ViewPgcAny.fromBuffer(res.data.supplement.value); - isFollowed.value = view.ogvData.userStatus.follow == 1; - followStatus.value = view.ogvData.userStatus.followStatus; + var userStatus = view.ogvData.userStatus; + isFollowed.value = userStatus.follow == 1; + followStatus.value = userStatus.followStatus; } }); } diff --git a/lib/utils/request_utils.dart b/lib/utils/request_utils.dart index cfb2453f0..021540e61 100644 --- a/lib/utils/request_utils.dart +++ b/lib/utils/request_utils.dart @@ -344,11 +344,13 @@ class RequestUtils { if (res['status']) { SmartDialog.showToast(!status ? '点赞成功' : '取消赞'); if (up == 1) { - like?.count = count + 1; - like?.status = true; + like + ?..count = count + 1 + ..status = true; } else { - like?.count = count - 1; - like?.status = false; + like + ?..count = count - 1 + ..status = false; } callback(); } else {