mod: show lv6_s
Closes #687 Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
|
Before Width: | Height: | Size: 514 B After Width: | Height: | Size: 915 B |
|
Before Width: | Height: | Size: 524 B After Width: | Height: | Size: 876 B |
|
Before Width: | Height: | Size: 518 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 541 B After Width: | Height: | Size: 991 B |
|
Before Width: | Height: | Size: 498 B After Width: | Height: | Size: 912 B |
|
Before Width: | Height: | Size: 539 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 1.1 KiB |
BIN
assets/images/lv/lv6_s.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
@@ -11,6 +11,7 @@ class MemberInfoModel {
|
|||||||
this.official,
|
this.official,
|
||||||
this.vip,
|
this.vip,
|
||||||
this.liveRoom,
|
this.liveRoom,
|
||||||
|
this.isSeniorMember,
|
||||||
});
|
});
|
||||||
|
|
||||||
int? mid;
|
int? mid;
|
||||||
@@ -24,6 +25,7 @@ class MemberInfoModel {
|
|||||||
Map? official;
|
Map? official;
|
||||||
Vip? vip;
|
Vip? vip;
|
||||||
LiveRoom? liveRoom;
|
LiveRoom? liveRoom;
|
||||||
|
int? isSeniorMember;
|
||||||
|
|
||||||
MemberInfoModel.fromJson(Map<String, dynamic> json) {
|
MemberInfoModel.fromJson(Map<String, dynamic> json) {
|
||||||
mid = json['mid'];
|
mid = json['mid'];
|
||||||
@@ -38,6 +40,7 @@ class MemberInfoModel {
|
|||||||
vip = Vip.fromJson(json['vip']);
|
vip = Vip.fromJson(json['vip']);
|
||||||
liveRoom =
|
liveRoom =
|
||||||
json['live_room'] != null ? LiveRoom.fromJson(json['live_room']) : null;
|
json['live_room'] != null ? LiveRoom.fromJson(json['live_room']) : null;
|
||||||
|
isSeniorMember = json['is_senior_member'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ class SearchUserItemModel {
|
|||||||
this.isLive,
|
this.isLive,
|
||||||
this.roomId,
|
this.roomId,
|
||||||
this.officialVerify,
|
this.officialVerify,
|
||||||
|
this.isSeniorMember,
|
||||||
});
|
});
|
||||||
|
|
||||||
String? type;
|
String? type;
|
||||||
@@ -141,6 +142,7 @@ class SearchUserItemModel {
|
|||||||
int? isLive;
|
int? isLive;
|
||||||
int? roomId;
|
int? roomId;
|
||||||
Map? officialVerify;
|
Map? officialVerify;
|
||||||
|
int? isSeniorMember;
|
||||||
|
|
||||||
SearchUserItemModel.fromJson(Map<String, dynamic> json) {
|
SearchUserItemModel.fromJson(Map<String, dynamic> json) {
|
||||||
type = json['type'];
|
type = json['type'];
|
||||||
@@ -159,6 +161,7 @@ class SearchUserItemModel {
|
|||||||
isLive = json['is_live'];
|
isLive = json['is_live'];
|
||||||
roomId = json['room_id'];
|
roomId = json['room_id'];
|
||||||
officialVerify = json['official_verify'];
|
officialVerify = json['official_verify'];
|
||||||
|
isSeniorMember = json['is_senior_member'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ class UserInfoData {
|
|||||||
this.wallet,
|
this.wallet,
|
||||||
this.hasShop,
|
this.hasShop,
|
||||||
this.shopUrl,
|
this.shopUrl,
|
||||||
|
this.isSeniorMember,
|
||||||
});
|
});
|
||||||
@HiveField(0)
|
@HiveField(0)
|
||||||
bool? isLogin;
|
bool? isLogin;
|
||||||
@@ -78,6 +79,8 @@ class UserInfoData {
|
|||||||
bool? hasShop;
|
bool? hasShop;
|
||||||
@HiveField(23)
|
@HiveField(23)
|
||||||
String? shopUrl;
|
String? shopUrl;
|
||||||
|
@HiveField(24)
|
||||||
|
int? isSeniorMember;
|
||||||
|
|
||||||
UserInfoData.fromJson(Map<String, dynamic> json) {
|
UserInfoData.fromJson(Map<String, dynamic> json) {
|
||||||
isLogin = json['isLogin'] ?? false;
|
isLogin = json['isLogin'] ?? false;
|
||||||
@@ -106,6 +109,7 @@ class UserInfoData {
|
|||||||
wallet = json['wallet'];
|
wallet = json['wallet'];
|
||||||
hasShop = json['has_shop'];
|
hasShop = json['has_shop'];
|
||||||
shopUrl = json['shop_url'];
|
shopUrl = json['shop_url'];
|
||||||
|
isSeniorMember = json['is_senior_member'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,13 +41,14 @@ class UserInfoDataAdapter extends TypeAdapter<UserInfoData> {
|
|||||||
wallet: (fields[21] as Map?)?.cast<dynamic, dynamic>(),
|
wallet: (fields[21] as Map?)?.cast<dynamic, dynamic>(),
|
||||||
hasShop: fields[22] as bool?,
|
hasShop: fields[22] as bool?,
|
||||||
shopUrl: fields[23] as String?,
|
shopUrl: fields[23] as String?,
|
||||||
|
isSeniorMember: fields[24] as int?,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void write(BinaryWriter writer, UserInfoData obj) {
|
void write(BinaryWriter writer, UserInfoData obj) {
|
||||||
writer
|
writer
|
||||||
..writeByte(24)
|
..writeByte(25)
|
||||||
..writeByte(0)
|
..writeByte(0)
|
||||||
..write(obj.isLogin)
|
..write(obj.isLogin)
|
||||||
..writeByte(1)
|
..writeByte(1)
|
||||||
@@ -95,7 +96,9 @@ class UserInfoDataAdapter extends TypeAdapter<UserInfoData> {
|
|||||||
..writeByte(22)
|
..writeByte(22)
|
||||||
..write(obj.hasShop)
|
..write(obj.hasShop)
|
||||||
..writeByte(23)
|
..writeByte(23)
|
||||||
..write(obj.shopUrl);
|
..write(obj.shopUrl)
|
||||||
|
..writeByte(24)
|
||||||
|
..write(obj.isSeniorMember);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ class UserInfoCard extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/lv/lv${card.levelInfo?.currentLevel}.png',
|
'assets/images/lv/lv${card.levelInfo?.identity == 2 ? '6_s' : card.levelInfo?.currentLevel}.png',
|
||||||
height: 11,
|
height: 11,
|
||||||
semanticLabel: '等级${card.levelInfo?.currentLevel}',
|
semanticLabel: '等级${card.levelInfo?.currentLevel}',
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ class _MinePageState extends State<MinePage> {
|
|||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/lv/lv${_mineController.userInfo.value.levelInfo != null ? _mineController.userInfo.value.levelInfo!.currentLevel : '0'}.png',
|
'assets/images/lv/lv${_mineController.userInfo.value.isSeniorMember == 1 ? '6_s' : _mineController.userInfo.value.levelInfo != null ? _mineController.userInfo.value.levelInfo!.currentLevel : '0'}.png',
|
||||||
height: 10,
|
height: 10,
|
||||||
semanticLabel:
|
semanticLabel:
|
||||||
'等级:${_mineController.userInfo.value.levelInfo != null ? _mineController.userInfo.value.levelInfo!.currentLevel : '0'}',
|
'等级:${_mineController.userInfo.value.levelInfo != null ? _mineController.userInfo.value.levelInfo!.currentLevel : '0'}',
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ Widget searchArticlePanel(
|
|||||||
|
|
||||||
return CustomScrollView(
|
return CustomScrollView(
|
||||||
controller: searchPanelCtr.scrollController,
|
controller: searchPanelCtr.scrollController,
|
||||||
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverPersistentHeader(
|
SliverPersistentHeader(
|
||||||
pinned: false,
|
pinned: false,
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ Widget searchLivePanel(
|
|||||||
Loading() => loadingWidget,
|
Loading() => loadingWidget,
|
||||||
Success() => loadingState.response?.isNotEmpty == true
|
Success() => loadingState.response?.isNotEmpty == true
|
||||||
? GridView.builder(
|
? GridView.builder(
|
||||||
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
left: StyleString.safeSpace,
|
left: StyleString.safeSpace,
|
||||||
right: StyleString.safeSpace,
|
right: StyleString.safeSpace,
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ Widget searchBangumiPanel(
|
|||||||
Success() => loadingState.response?.isNotEmpty == true
|
Success() => loadingState.response?.isNotEmpty == true
|
||||||
? CustomScrollView(
|
? CustomScrollView(
|
||||||
controller: ctr.scrollController,
|
controller: ctr.scrollController,
|
||||||
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverPadding(
|
SliverPadding(
|
||||||
padding: EdgeInsets.only(
|
padding: EdgeInsets.only(
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ Widget searchUserPanel(
|
|||||||
|
|
||||||
return CustomScrollView(
|
return CustomScrollView(
|
||||||
controller: searchPanelCtr.scrollController,
|
controller: searchPanelCtr.scrollController,
|
||||||
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverPersistentHeader(
|
SliverPersistentHeader(
|
||||||
pinned: false,
|
pinned: false,
|
||||||
@@ -151,7 +152,7 @@ Widget searchUserPanel(
|
|||||||
),
|
),
|
||||||
const SizedBox(width: 6),
|
const SizedBox(width: 6),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/lv/lv${i!.level}.png',
|
'assets/images/lv/lv${i.isSeniorMember == 1 ? '6_s' : i!.level}.png',
|
||||||
height: 11,
|
height: 11,
|
||||||
semanticLabel: '等级${i.level}',
|
semanticLabel: '等级${i.level}',
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ Widget searchVideoPanel(
|
|||||||
final controller = Get.put(VideoPanelController(), tag: searchPanelCtr.tag);
|
final controller = Get.put(VideoPanelController(), tag: searchPanelCtr.tag);
|
||||||
return CustomScrollView(
|
return CustomScrollView(
|
||||||
controller: searchPanelCtr.scrollController,
|
controller: searchPanelCtr.scrollController,
|
||||||
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverPersistentHeader(
|
SliverPersistentHeader(
|
||||||
pinned: false,
|
pinned: false,
|
||||||
|
|||||||
@@ -274,7 +274,7 @@ class _HorizontalMemberPageState extends State<HorizontalMemberPage> {
|
|||||||
),
|
),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/lv/lv${memberInfoModel.level}.png',
|
'assets/images/lv/lv${memberInfoModel.isSeniorMember == 1 ? '6_s' : memberInfoModel.level}.png',
|
||||||
height: 11,
|
height: 11,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ Widget _itemWidget(BuildContext context, dynamic item) {
|
|||||||
const SizedBox(width: 6),
|
const SizedBox(width: 6),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/lv/lv${item['author']['level']}.png',
|
'assets/images/lv/lv${item['author']['level']}.png',
|
||||||
height: 11,
|
height: 19,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -302,7 +302,7 @@ class ReplyItemGrpc extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
const SizedBox(width: 6),
|
const SizedBox(width: 6),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'assets/images/lv/lv${replyItem.member.level}.png',
|
'assets/images/lv/lv${replyItem.member.isSeniorMember == 1 ? '6_s' : replyItem.member.level}.png',
|
||||||
height: 11,
|
height: 11,
|
||||||
semanticLabel: "等级:${replyItem.member.level}",
|
semanticLabel: "等级:${replyItem.member.level}",
|
||||||
),
|
),
|
||||||
|
|||||||