merge main
This commit is contained in:
12
lib/models/common/gesture_mode.dart
Normal file
12
lib/models/common/gesture_mode.dart
Normal file
@ -0,0 +1,12 @@
|
||||
enum FullScreenGestureMode {
|
||||
/// 从上滑到下
|
||||
fromToptoBottom,
|
||||
|
||||
/// 从下滑到上
|
||||
fromBottomtoTop,
|
||||
}
|
||||
|
||||
extension FullScreenGestureModeExtension on FullScreenGestureMode {
|
||||
String get values => ['fromToptoBottom', 'fromBottomtoTop'][index];
|
||||
String get labels => ['从上往下滑进入全屏', '从下往上滑进入全屏'][index];
|
||||
}
|
||||
4
lib/models/common/index.dart
Normal file
4
lib/models/common/index.dart
Normal file
@ -0,0 +1,4 @@
|
||||
library commonn_model;
|
||||
|
||||
export './business_type.dart';
|
||||
export './gesture_mode.dart';
|
||||
43
lib/models/common/nav_bar_config.dart
Normal file
43
lib/models/common/nav_bar_config.dart
Normal file
@ -0,0 +1,43 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
List defaultNavigationBars = [
|
||||
{
|
||||
'id': 0,
|
||||
'icon': const Icon(
|
||||
Icons.home_outlined,
|
||||
size: 21,
|
||||
),
|
||||
'selectIcon': const Icon(
|
||||
Icons.home,
|
||||
size: 21,
|
||||
),
|
||||
'label': "首页",
|
||||
'count': 0,
|
||||
},
|
||||
{
|
||||
'id': 1,
|
||||
'icon': const Icon(
|
||||
Icons.motion_photos_on_outlined,
|
||||
size: 21,
|
||||
),
|
||||
'selectIcon': const Icon(
|
||||
Icons.motion_photos_on,
|
||||
size: 21,
|
||||
),
|
||||
'label': "动态",
|
||||
'count': 0,
|
||||
},
|
||||
{
|
||||
'id': 2,
|
||||
'icon': const Icon(
|
||||
Icons.video_collection_outlined,
|
||||
size: 20,
|
||||
),
|
||||
'selectIcon': const Icon(
|
||||
Icons.video_collection,
|
||||
size: 21,
|
||||
),
|
||||
'label': "媒体库",
|
||||
'count': 0,
|
||||
}
|
||||
];
|
||||
@ -2,18 +2,28 @@ class FollowUpModel {
|
||||
FollowUpModel({
|
||||
this.liveUsers,
|
||||
this.upList,
|
||||
this.liveList,
|
||||
this.myInfo,
|
||||
});
|
||||
|
||||
LiveUsers? liveUsers;
|
||||
List<UpItem>? upList;
|
||||
List<LiveUserItem>? liveList;
|
||||
MyInfo? myInfo;
|
||||
|
||||
FollowUpModel.fromJson(Map<String, dynamic> json) {
|
||||
liveUsers = json['live_users'] != null
|
||||
? LiveUsers.fromJson(json['live_users'])
|
||||
: null;
|
||||
liveList = json['live_users'] != null
|
||||
? json['live_users']['items']
|
||||
.map<LiveUserItem>((e) => LiveUserItem.fromJson(e))
|
||||
.toList()
|
||||
: [];
|
||||
upList = json['up_list'] != null
|
||||
? json['up_list'].map<UpItem>((e) => UpItem.fromJson(e)).toList()
|
||||
: [];
|
||||
myInfo = json['my_info'] != null ? MyInfo.fromJson(json['my_info']) : null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -93,3 +103,21 @@ class UpItem {
|
||||
uname = json['uname'];
|
||||
}
|
||||
}
|
||||
|
||||
class MyInfo {
|
||||
MyInfo({
|
||||
this.face,
|
||||
this.mid,
|
||||
this.name,
|
||||
});
|
||||
|
||||
String? face;
|
||||
int? mid;
|
||||
String? name;
|
||||
|
||||
MyInfo.fromJson(Map<String, dynamic> json) {
|
||||
face = json['face'];
|
||||
mid = json['mid'];
|
||||
name = json['name'];
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ class SessionDataModel {
|
||||
this.hasMore,
|
||||
});
|
||||
|
||||
List? sessionList;
|
||||
List<SessionList>? sessionList;
|
||||
int? hasMore;
|
||||
|
||||
SessionDataModel.fromJson(Map<String, dynamic> json) {
|
||||
@ -121,35 +121,37 @@ class LastMsg {
|
||||
this.msgKey,
|
||||
this.msgStatus,
|
||||
this.notifyCode,
|
||||
this.newFaceVersion,
|
||||
// this.newFaceVersion,
|
||||
});
|
||||
|
||||
int? senderIid;
|
||||
int? receiverType;
|
||||
int? receiverId;
|
||||
int? msgType;
|
||||
Map? content;
|
||||
dynamic content;
|
||||
int? msgSeqno;
|
||||
int? timestamp;
|
||||
String? atUids;
|
||||
int? msgKey;
|
||||
int? msgStatus;
|
||||
String? notifyCode;
|
||||
int? newFaceVersion;
|
||||
// int? newFaceVersion;
|
||||
|
||||
LastMsg.fromJson(Map<String, dynamic> json) {
|
||||
senderIid = json['sender_uid'];
|
||||
receiverType = json['receiver_type'];
|
||||
receiverId = json['receiver_id'];
|
||||
msgType = json['msg_type'];
|
||||
content = jsonDecode(json['content']);
|
||||
content = json['content'] != null && json['content'] != ''
|
||||
? jsonDecode(json['content'])
|
||||
: '';
|
||||
msgSeqno = json['msg_seqno'];
|
||||
timestamp = json['timestamp'];
|
||||
atUids = json['at_uids'];
|
||||
msgKey = json['msg_key'];
|
||||
msgStatus = json['msg_status'];
|
||||
notifyCode = json['notify_code'];
|
||||
newFaceVersion = json['new_face_version'];
|
||||
// newFaceVersion = json['new_face_version'];
|
||||
}
|
||||
}
|
||||
|
||||
@ -214,7 +216,9 @@ class MessageItem {
|
||||
receiverId = json['receiver_id'];
|
||||
// 1 文本 2 图片 18 系统提示 10 系统通知 5 撤回的消息
|
||||
msgType = json['msg_type'];
|
||||
content = jsonDecode(json['content']);
|
||||
content = json['content'] != null && json['content'] != ''
|
||||
? jsonDecode(json['content'])
|
||||
: '';
|
||||
msgSeqno = json['msg_seqno'];
|
||||
timestamp = json['timestamp'];
|
||||
atUids = json['at_uids'];
|
||||
|
||||
@ -85,7 +85,9 @@ class SearchVideoItemModel {
|
||||
// title = json['title'].replaceAll(RegExp(r'<.*?>'), '');
|
||||
title = Em.regTitle(json['title']);
|
||||
description = json['description'];
|
||||
pic = 'https:${json['pic']}';
|
||||
pic = json['pic'] != null && json['pic'].startsWith('//')
|
||||
? 'https:${json['pic']}'
|
||||
: json['pic'] ?? '';
|
||||
videoReview = json['video_review'];
|
||||
pubdate = json['pubdate'];
|
||||
senddate = json['senddate'];
|
||||
|
||||
@ -15,7 +15,7 @@ class FavFolderData {
|
||||
? json['list']
|
||||
.map<FavFolderItemData>((e) => FavFolderItemData.fromJson(e))
|
||||
.toList()
|
||||
: [FavFolderItemData()];
|
||||
: <FavFolderItemData>[];
|
||||
hasMore = json['has_more'];
|
||||
}
|
||||
}
|
||||
|
||||
123
lib/models/user/sub_detail.dart
Normal file
123
lib/models/user/sub_detail.dart
Normal file
@ -0,0 +1,123 @@
|
||||
class SubDetailModelData {
|
||||
DetailInfo? info;
|
||||
List<SubDetailMediaItem>? medias;
|
||||
|
||||
SubDetailModelData({this.info, this.medias});
|
||||
|
||||
SubDetailModelData.fromJson(Map<String, dynamic> json) {
|
||||
info = DetailInfo.fromJson(json['info']);
|
||||
if (json['medias'] != null) {
|
||||
medias = <SubDetailMediaItem>[];
|
||||
json['medias'].forEach((v) {
|
||||
medias!.add(SubDetailMediaItem.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SubDetailMediaItem {
|
||||
int? id;
|
||||
String? title;
|
||||
String? cover;
|
||||
String? pic;
|
||||
int? duration;
|
||||
int? pubtime;
|
||||
String? bvid;
|
||||
Map? upper;
|
||||
Map? cntInfo;
|
||||
int? enableVt;
|
||||
String? vtDisplay;
|
||||
|
||||
SubDetailMediaItem({
|
||||
this.id,
|
||||
this.title,
|
||||
this.cover,
|
||||
this.pic,
|
||||
this.duration,
|
||||
this.pubtime,
|
||||
this.bvid,
|
||||
this.upper,
|
||||
this.cntInfo,
|
||||
this.enableVt,
|
||||
this.vtDisplay,
|
||||
});
|
||||
|
||||
SubDetailMediaItem.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
title = json['title'];
|
||||
cover = json['cover'];
|
||||
pic = json['cover'];
|
||||
duration = json['duration'];
|
||||
pubtime = json['pubtime'];
|
||||
bvid = json['bvid'];
|
||||
upper = json['upper'];
|
||||
cntInfo = json['cnt_info'];
|
||||
enableVt = json['enable_vt'];
|
||||
vtDisplay = json['vt_display'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final data = <String, dynamic>{};
|
||||
data['id'] = id;
|
||||
data['title'] = title;
|
||||
data['cover'] = cover;
|
||||
data['duration'] = duration;
|
||||
data['pubtime'] = pubtime;
|
||||
data['bvid'] = bvid;
|
||||
data['upper'] = upper;
|
||||
data['cnt_info'] = cntInfo;
|
||||
data['enable_vt'] = enableVt;
|
||||
data['vt_display'] = vtDisplay;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class DetailInfo {
|
||||
int? id;
|
||||
int? seasonType;
|
||||
String? title;
|
||||
String? cover;
|
||||
Map? upper;
|
||||
Map? cntInfo;
|
||||
int? mediaCount;
|
||||
String? intro;
|
||||
int? enableVt;
|
||||
|
||||
DetailInfo({
|
||||
this.id,
|
||||
this.seasonType,
|
||||
this.title,
|
||||
this.cover,
|
||||
this.upper,
|
||||
this.cntInfo,
|
||||
this.mediaCount,
|
||||
this.intro,
|
||||
this.enableVt,
|
||||
});
|
||||
|
||||
DetailInfo.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
seasonType = json['season_type'];
|
||||
title = json['title'];
|
||||
cover = json['cover'];
|
||||
upper = json['upper'];
|
||||
cntInfo = json['cnt_info'];
|
||||
mediaCount = json['media_count'];
|
||||
intro = json['intro'];
|
||||
enableVt = json['enable_vt'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final data = <String, dynamic>{};
|
||||
data['id'] = id;
|
||||
data['season_type'] = seasonType;
|
||||
data['title'] = title;
|
||||
data['cover'] = cover;
|
||||
data['upper'] = upper;
|
||||
data['cnt_info'] = cntInfo;
|
||||
data['media_count'] = mediaCount;
|
||||
data['intro'] = intro;
|
||||
data['enable_vt'] = enableVt;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
111
lib/models/user/sub_folder.dart
Normal file
111
lib/models/user/sub_folder.dart
Normal file
@ -0,0 +1,111 @@
|
||||
class SubFolderModelData {
|
||||
final int? count;
|
||||
final List<SubFolderItemData>? list;
|
||||
|
||||
SubFolderModelData({
|
||||
this.count,
|
||||
this.list,
|
||||
});
|
||||
|
||||
factory SubFolderModelData.fromJson(Map<String, dynamic> json) {
|
||||
return SubFolderModelData(
|
||||
count: json['count'],
|
||||
list: json['list'] != null
|
||||
? (json['list'] as List)
|
||||
.map<SubFolderItemData>((i) => SubFolderItemData.fromJson(i))
|
||||
.toList()
|
||||
: null,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class SubFolderItemData {
|
||||
final int? id;
|
||||
final int? fid;
|
||||
final int? mid;
|
||||
final int? attr;
|
||||
final String? title;
|
||||
final String? cover;
|
||||
final Upper? upper;
|
||||
final int? coverType;
|
||||
final String? intro;
|
||||
final int? ctime;
|
||||
final int? mtime;
|
||||
final int? state;
|
||||
final int? favState;
|
||||
final int? mediaCount;
|
||||
final int? viewCount;
|
||||
final int? vt;
|
||||
final int? playSwitch;
|
||||
final int? type;
|
||||
final String? link;
|
||||
final String? bvid;
|
||||
|
||||
SubFolderItemData({
|
||||
this.id,
|
||||
this.fid,
|
||||
this.mid,
|
||||
this.attr,
|
||||
this.title,
|
||||
this.cover,
|
||||
this.upper,
|
||||
this.coverType,
|
||||
this.intro,
|
||||
this.ctime,
|
||||
this.mtime,
|
||||
this.state,
|
||||
this.favState,
|
||||
this.mediaCount,
|
||||
this.viewCount,
|
||||
this.vt,
|
||||
this.playSwitch,
|
||||
this.type,
|
||||
this.link,
|
||||
this.bvid,
|
||||
});
|
||||
|
||||
factory SubFolderItemData.fromJson(Map<String, dynamic> json) {
|
||||
return SubFolderItemData(
|
||||
id: json['id'],
|
||||
fid: json['fid'],
|
||||
mid: json['mid'],
|
||||
attr: json['attr'],
|
||||
title: json['title'],
|
||||
cover: json['cover'],
|
||||
upper: json['upper'] != null ? Upper.fromJson(json['upper']) : null,
|
||||
coverType: json['cover_type'],
|
||||
intro: json['intro'],
|
||||
ctime: json['ctime'],
|
||||
mtime: json['mtime'],
|
||||
state: json['state'],
|
||||
favState: json['fav_state'],
|
||||
mediaCount: json['media_count'],
|
||||
viewCount: json['view_count'],
|
||||
vt: json['vt'],
|
||||
playSwitch: json['play_switch'],
|
||||
type: json['type'],
|
||||
link: json['link'],
|
||||
bvid: json['bvid'],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class Upper {
|
||||
final int? mid;
|
||||
final String? name;
|
||||
final String? face;
|
||||
|
||||
Upper({
|
||||
this.mid,
|
||||
this.name,
|
||||
this.face,
|
||||
});
|
||||
|
||||
factory Upper.fromJson(Map<String, dynamic> json) {
|
||||
return Upper(
|
||||
mid: json['mid'],
|
||||
name: json['name'],
|
||||
face: json['face'],
|
||||
);
|
||||
}
|
||||
}
|
||||
120
lib/models/video/reply/emote.dart
Normal file
120
lib/models/video/reply/emote.dart
Normal file
@ -0,0 +1,120 @@
|
||||
class EmoteModelData {
|
||||
final List<PackageItem>? packages;
|
||||
|
||||
EmoteModelData({
|
||||
required this.packages,
|
||||
});
|
||||
|
||||
factory EmoteModelData.fromJson(Map<String, dynamic> jsonRes) {
|
||||
final List<PackageItem>? packages =
|
||||
jsonRes['packages'] is List ? <PackageItem>[] : null;
|
||||
if (packages != null) {
|
||||
for (final dynamic item in jsonRes['packages']!) {
|
||||
if (item != null) {
|
||||
try {
|
||||
packages.add(PackageItem.fromJson(item));
|
||||
} catch (_) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
return EmoteModelData(
|
||||
packages: packages,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class PackageItem {
|
||||
final int? id;
|
||||
final String? text;
|
||||
final String? url;
|
||||
final int? mtime;
|
||||
final int? type;
|
||||
final int? attr;
|
||||
final Meta? meta;
|
||||
final List<Emote>? emote;
|
||||
|
||||
PackageItem({
|
||||
required this.id,
|
||||
required this.text,
|
||||
required this.url,
|
||||
required this.mtime,
|
||||
required this.type,
|
||||
required this.attr,
|
||||
required this.meta,
|
||||
required this.emote,
|
||||
});
|
||||
|
||||
factory PackageItem.fromJson(Map<String, dynamic> jsonRes) {
|
||||
final List<Emote>? emote = jsonRes['emote'] is List ? <Emote>[] : null;
|
||||
if (emote != null) {
|
||||
for (final dynamic item in jsonRes['emote']!) {
|
||||
if (item != null) {
|
||||
try {
|
||||
emote.add(Emote.fromJson(item));
|
||||
} catch (_) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
return PackageItem(
|
||||
id: jsonRes['id'],
|
||||
text: jsonRes['text'],
|
||||
url: jsonRes['url'],
|
||||
mtime: jsonRes['mtime'],
|
||||
type: jsonRes['type'],
|
||||
attr: jsonRes['attr'],
|
||||
meta: Meta.fromJson(jsonRes['meta']),
|
||||
emote: emote,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class Meta {
|
||||
final int? size;
|
||||
final List<String>? suggest;
|
||||
|
||||
Meta({
|
||||
required this.size,
|
||||
required this.suggest,
|
||||
});
|
||||
|
||||
factory Meta.fromJson(Map<String, dynamic> jsonRes) => Meta(
|
||||
size: jsonRes['size'],
|
||||
suggest: jsonRes['suggest'] is List ? <String>[] : null,
|
||||
);
|
||||
}
|
||||
|
||||
class Emote {
|
||||
final int? id;
|
||||
final int? packageId;
|
||||
final String? text;
|
||||
final String? url;
|
||||
final int? mtime;
|
||||
final int? type;
|
||||
final int? attr;
|
||||
final Meta? meta;
|
||||
final dynamic activity;
|
||||
|
||||
Emote({
|
||||
required this.id,
|
||||
required this.packageId,
|
||||
required this.text,
|
||||
required this.url,
|
||||
required this.mtime,
|
||||
required this.type,
|
||||
required this.attr,
|
||||
required this.meta,
|
||||
required this.activity,
|
||||
});
|
||||
|
||||
factory Emote.fromJson(Map<String, dynamic> jsonRes) => Emote(
|
||||
id: jsonRes['id'],
|
||||
packageId: jsonRes['package_id'],
|
||||
text: jsonRes['text'],
|
||||
url: jsonRes['url'],
|
||||
mtime: jsonRes['mtime'],
|
||||
type: jsonRes['type'],
|
||||
attr: jsonRes['attr'],
|
||||
meta: Meta.fromJson(jsonRes['meta']),
|
||||
activity: jsonRes['activity'],
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user