fix: 数据格式null

This commit is contained in:
guozhigq
2023-08-31 09:55:57 +08:00
parent 4f6dd68954
commit 3c1fa82010
4 changed files with 28 additions and 14 deletions

View File

@ -128,7 +128,8 @@ class VideoItem {
VideoItem.fromJson(Map<String, dynamic> json) {
id = json['id'];
baseUrl = json['baseUrl'];
backupUrl = json['backupUrl'].toList().first;
backupUrl =
json['backupUrl'] != null ? json['backupUrl'].toList().first : '';
bandWidth = json['bandWidth'];
mimeType = json['mime_type'];
codecs = json['codecs'];
@ -179,7 +180,8 @@ class AudioItem {
AudioItem.fromJson(Map<String, dynamic> json) {
id = json['id'];
baseUrl = json['baseUrl'];
backupUrl = json['backupUrl'].toList().first;
backupUrl =
json['backupUrl'] != null ? json['backupUrl'].toList().first : '';
bandWidth = json['bandWidth'];
mimeType = json['mime_type'];
codecs = json['codecs'];

View File

@ -42,13 +42,17 @@ Widget articlePanel(item, context, {floor = 1}) {
.copyWith(fontWeight: FontWeight.bold),
),
const SizedBox(height: 2),
if (item.modules.moduleDynamic.major.opus.summary.text != 'undefined')
if (item.modules.moduleDynamic.major.opus.summary.text !=
'undefined') ...[
Text(
item.modules.moduleDynamic.major.opus.summary.richTextNodes.first
.text,
maxLines: 4,
style: const TextStyle(height: 1.55),
overflow: TextOverflow.ellipsis,
),
const SizedBox(height: 2),
],
picWidget(item, context)
],
),

View File

@ -44,27 +44,25 @@ Widget picWidget(item, context) {
double maxWidth = box.maxWidth;
double aspectRatio = 1.0;
double origAspectRatio = 0.0;
double crossCount = len == 1
? 1
: len < 3
? 2
: 3;
double crossCount = 3;
double height = 0.0;
if (len == 1) {
origAspectRatio =
aspectRatio = pictures.first.width / pictures.first.height;
try {
origAspectRatio =
aspectRatio = pictures.first.width / pictures.first.height;
} catch (_) {}
if (aspectRatio < 0.4) {
aspectRatio = 0.4;
}
height = pictures.first.height * maxWidth / pictures.first.width;
if (origAspectRatio < 0.5 || pictures.first.width < 1920) {
crossCount = 2;
height = maxWidth / 2 / aspectRatio;
}
} else {
aspectRatio = 1;
height = maxWidth / crossCount * ((len / crossCount).ceil()) + 6;
height =
maxWidth / crossCount * ((len + crossCount - 1) ~/ crossCount) + 6;
}
return Container(
padding: const EdgeInsets.only(top: 4),

View File

@ -56,9 +56,19 @@ class SearchPanelController extends GetxController {
// 匹配输入内容如果是AV、BV号且有结果 直接跳转详情页
Map matchRes = IdUtils.matchAvorBv(input: keyword);
List matchKeys = matchRes.keys.toList();
String bvid = resultList.first.bvid;
String? bvid;
try {
bvid = resultList.first.bvid;
} catch (_) {
bvid = null;
}
// keyword 可能输入纯数字
int aid = resultList.first.aid;
int? aid;
try {
aid = resultList.first.aid;
} catch (_) {
aid = null;
}
if (matchKeys.isNotEmpty && searchType == SearchType.video ||
aid.toString() == keyword) {
String heroTag = Utils.makeHeroTag(bvid);