* opt: unused layout

* mod: semantics

* opt: DanmakuMsg type

* opt: avoid cast

* opt: unnecessary_lambdas

* opt: use isEven

* opt: logger

* opt: invalid common page

* tweak

* opt: unify DynController
This commit is contained in:
My-Responsitories
2025-08-27 12:01:53 +08:00
committed by GitHub
parent 56ffc2781f
commit 5f8313901b
83 changed files with 551 additions and 545 deletions

View File

@@ -1,14 +1,15 @@
import 'package:flutter/material.dart' show IconData, Icons;
enum StatType {
view(Icons.remove_red_eye_outlined),
danmaku(Icons.subtitles_outlined),
like(Icons.thumb_up_outlined),
reply(Icons.comment_outlined),
follow(Icons.favorite_border),
play(Icons.play_circle_outlined),
listen(Icons.headset_outlined);
view(Icons.remove_red_eye_outlined, '观看'),
danmaku(Icons.subtitles_outlined, '弹幕'),
like(Icons.thumb_up_outlined, '点赞'),
reply(Icons.comment_outlined, '评论'),
follow(Icons.favorite_border, '关注'),
play(Icons.play_circle_outlined, '播放'),
listen(Icons.headset_outlined, '播放');
final IconData iconData;
const StatType(this.iconData);
final String label;
const StatType(this.iconData, this.label);
}

View File

@@ -118,7 +118,7 @@ class DynamicItemModel {
idStr = json['item']?['id_str'];
// type = json['type']; // int
if (json['item']?['modules'] case List list) {
modules = ItemModulesModel.fromOpusJson(list.cast());
modules = ItemModulesModel.fromOpusJson(list);
} else {
modules = ItemModulesModel();
}
@@ -181,8 +181,8 @@ class ItemModulesModel {
: null;
}
ItemModulesModel.fromOpusJson(List<Map<String, dynamic>> json) {
for (var i in json) {
ItemModulesModel.fromOpusJson(List json) {
for (Map<String, dynamic> i in json) {
switch (i['module_type']) {
case 'MODULE_TYPE_TOP':
moduleTop = i['module_top'] == null

View File

@@ -1,3 +1,5 @@
import 'package:PiliPlus/utils/extension.dart';
class SimpleVoteInfo {
int? choiceCnt;
int? defaultShare;
@@ -73,7 +75,7 @@ class VoteInfo extends SimpleVoteInfo {
title = json['title'];
uid = json['vote_publisher'];
ctime = json['ctime'];
myVotes = (json['my_votes'] as List?)?.cast(); // doVote
myVotes = (json['my_votes'] as List?)?.fromCast(); // doVote
options =
(json['options'] as List?)?.map((v) => Option.fromJson(v)).toList() ??
<Option>[];
@@ -87,7 +89,7 @@ class VoteInfo extends SimpleVoteInfo {
factory VoteInfo.fromSeparatedJson(Map<String, dynamic> json) {
return VoteInfo.fromJson(json['vote_info'])
..myVotes = (json['my_votes'] as List?)?.cast(); // voteInfo
..myVotes = (json['my_votes'] as List?)?.fromCast(); // voteInfo
}
Map<String, dynamic> toJson() => {

View File

@@ -425,7 +425,7 @@ class SearchArticleItemModel {
subTitle = title.map((e) => e.text).join();
rankOffset = json['rank_offset'];
mid = json['mid'];
imageUrls = (json['image_urls'] as List?)?.cast();
imageUrls = (json['image_urls'] as List?)?.fromCast();
id = json['id'];
categoryId = json['category_id'];
view = json['view'];

View File

@@ -1,3 +1,4 @@
import 'package:PiliPlus/utils/extension.dart';
import 'package:hive/hive.dart';
part 'info.g.dart';

View File

@@ -25,9 +25,9 @@ class UserInfoDataAdapter extends TypeAdapter<UserInfoData> {
mobileVerified: fields[5] as int?,
money: fields[6] as double?,
moral: fields[7] as int?,
official: (fields[8] as Map?)?.cast<dynamic, dynamic>(),
officialVerify: (fields[9] as Map?)?.cast<dynamic, dynamic>(),
pendant: (fields[10] as Map?)?.cast<dynamic, dynamic>(),
official: (fields[8] as Map?)?.fromCast<dynamic, dynamic>(),
officialVerify: (fields[9] as Map?)?.fromCast<dynamic, dynamic>(),
pendant: (fields[10] as Map?)?.fromCast<dynamic, dynamic>(),
scores: fields[11] as int?,
uname: fields[12] as String?,
vipDueDate: fields[13] as int?,
@@ -35,10 +35,10 @@ class UserInfoDataAdapter extends TypeAdapter<UserInfoData> {
vipType: fields[15] as int?,
vipPayType: fields[16] as int?,
vipThemeType: fields[17] as int?,
vipLabel: (fields[18] as Map?)?.cast<dynamic, dynamic>(),
vipLabel: (fields[18] as Map?)?.fromCast<dynamic, dynamic>(),
vipAvatarSub: fields[19] as int?,
vipNicknameColor: fields[20] as String?,
wallet: (fields[21] as Map?)?.cast<dynamic, dynamic>(),
wallet: (fields[21] as Map?)?.fromCast<dynamic, dynamic>(),
hasShop: fields[22] as bool?,
shopUrl: fields[23] as String?,
isSeniorMember: fields[24] as int?,

View File

@@ -1,5 +1,6 @@
import 'package:PiliPlus/models/common/video/audio_quality.dart';
import 'package:PiliPlus/models/common/video/video_quality.dart';
import 'package:PiliPlus/utils/extension.dart';
class PlayUrlModel {
PlayUrlModel({
@@ -172,7 +173,8 @@ abstract class BaseItem {
id = json['id'];
baseUrl = json['baseUrl'] ?? json['base_url'];
final backupUrls =
((json['backupUrl'] ?? json['backup_url']) as List?)?.cast<String>() ??
((json['backupUrl'] ?? json['backup_url']) as List?)
?.fromCast<String>() ??
<String>[];
backupUrl = backupUrls.isNotEmpty
? backupUrls.firstWhere(
@@ -248,7 +250,7 @@ class FormatItem {
format = json['format'];
newDesc = json['new_description'];
displayDesc = json['display_desc'];
codecs = (json['codecs'] as List?)?.cast<String>();
codecs = (json['codecs'] as List?)?.fromCast<String>();
}
}