diff --git a/lib/pages/member/new/controller.dart b/lib/pages/member/new/controller.dart index cd777b5f..9907c886 100644 --- a/lib/pages/member/new/controller.dart +++ b/lib/pages/member/new/controller.dart @@ -8,6 +8,7 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; +import 'package:intl/intl.dart'; import 'package:share_plus/share_plus.dart'; enum MemberTabType { none, home, dynamic, contribute, favorite, bangumi } @@ -40,6 +41,9 @@ class MemberControllerNew extends CommonController dynamic live; + int? silence; + String? endTime; + @override bool customHandleResponse(Success response) { username = response.response?.card?.name ?? ''; @@ -49,6 +53,16 @@ class MemberControllerNew extends CommonController : response.response?.relation ?? 1; tab2 = response.response.tab2; live = response.response?.live; + silence = response.response?.card?.silence; + if (response.response?.card?.endTime != null) { + if (response.response.card.endTime == 0) { + endTime = ': 永久封禁'; + } else if (response.response.card.endTime > + DateTime.now().millisecondsSinceEpoch ~/ 1000) { + endTime = + ':至 ${DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.fromMillisecondsSinceEpoch(response.response.card.endTime * 1000))}'; + } + } if (tab2 != null && tab2!.isNotEmpty) { if (!response.response.tab.toJson().values.contains(true) && tab2!.first.param == 'home') { diff --git a/lib/pages/member/new/member_page.dart b/lib/pages/member/new/member_page.dart index 7e012fde..f5ed0d03 100644 --- a/lib/pages/member/new/member_page.dart +++ b/lib/pages/member/new/member_page.dart @@ -318,6 +318,8 @@ class _MemberPageNewState extends State images: userState.response.images, onFollow: () => _userController.onFollow(context), live: _userController.live, + silence: _userController.silence, + endTime: _userController.endTime, ), ), ), diff --git a/lib/pages/member/new/widget/user_info_card.dart b/lib/pages/member/new/widget/user_info_card.dart index 7bfdaad1..7a03cdad 100644 --- a/lib/pages/member/new/widget/user_info_card.dart +++ b/lib/pages/member/new/widget/user_info_card.dart @@ -19,6 +19,8 @@ class UserInfoCard extends StatelessWidget { required this.isFollow, required this.onFollow, this.live, + this.silence, + this.endTime, }); final bool isV; @@ -29,6 +31,8 @@ class UserInfoCard extends StatelessWidget { final space.Images images; final VoidCallback onFollow; final dynamic live; + final int? silence; + final String? endTime; @override Widget build(BuildContext context) { @@ -259,17 +263,45 @@ class UserInfoCard extends StatelessWidget { ], ), ), - // if (card.spaceTagBottom != null && card.spaceTagBottom!.isNotEmpty) - // Padding( - // padding: const EdgeInsets.only(left: 20, top: 8, right: 20), - // child: Wrap( - // spacing: 5, - // runSpacing: 8, - // children: card.spaceTagBottom! - // .map((item) => Text(item.title ?? '')) - // .toList(), - // ), - // ), + if (silence == 1) + Builder(builder: (context) { + bool isLight = Theme.of(context).brightness == Brightness.light; + return GestureDetector( + onTap: () { + Utils.handleWebview( + 'https://www.bilibili.com/blackroom/ban/${card.mid}'); + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6), + color: isLight + ? Theme.of(context).colorScheme.errorContainer + : Theme.of(context).colorScheme.error, + ), + margin: const EdgeInsets.only(left: 20, top: 8, right: 20), + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + child: Row( + children: [ + Icon( + Icons.info, + size: MediaQuery.textScalerOf(context).scale(18), + color: isLight + ? Theme.of(context).colorScheme.onErrorContainer + : Theme.of(context).colorScheme.onError, + ), + Text( + ' 该账号封禁中${endTime ?? ''}', + style: TextStyle( + color: isLight + ? Theme.of(context).colorScheme.onErrorContainer + : Theme.of(context).colorScheme.onError, + ), + ), + ], + ), + ), + ); + }), ]; _buildRight(BuildContext context) => Column(