mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-21 17:46:24 +08:00
committed by
GitHub
parent
c899ea95e1
commit
8d34e6f340
@@ -1,14 +1,14 @@
|
||||
import 'package:PiliPlus/http/dynamics.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/dynamics/article_list/article.dart';
|
||||
import 'package:PiliPlus/models/dynamics/article_list/author.dart';
|
||||
import 'package:PiliPlus/models/dynamics/article_list/data.dart';
|
||||
import 'package:PiliPlus/models/dynamics/article_list/list.dart';
|
||||
import 'package:PiliPlus/models/model_owner.dart';
|
||||
import 'package:PiliPlus/models/space_article/item.dart';
|
||||
import 'package:PiliPlus/pages/common/common_list_controller.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class ArticleListController
|
||||
extends CommonListController<ArticleListData, Article> {
|
||||
extends CommonListController<ArticleListData, SpaceArticleItem> {
|
||||
final id = Get.parameters['id'];
|
||||
|
||||
@override
|
||||
@@ -18,10 +18,10 @@ class ArticleListController
|
||||
}
|
||||
|
||||
Rx<ArticleList?> list = Rx<ArticleList?>(null);
|
||||
Author? author;
|
||||
Owner? author;
|
||||
|
||||
@override
|
||||
List<Article>? getDataList(ArticleListData response) {
|
||||
List<SpaceArticleItem>? getDataList(ArticleListData response) {
|
||||
list.value = response.list;
|
||||
author = response.author;
|
||||
return response.articles;
|
||||
|
||||
@@ -5,8 +5,8 @@ import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
|
||||
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/common/image_type.dart';
|
||||
import 'package:PiliPlus/models/dynamics/article_list/article.dart';
|
||||
import 'package:PiliPlus/models/dynamics/article_list/list.dart';
|
||||
import 'package:PiliPlus/models/space_article/item.dart';
|
||||
import 'package:PiliPlus/pages/article_list/controller.dart';
|
||||
import 'package:PiliPlus/pages/article_list/widgets/item.dart';
|
||||
import 'package:PiliPlus/utils/grid.dart';
|
||||
@@ -51,7 +51,7 @@ class _ArticleListPageState extends State<ArticleListPage> {
|
||||
}
|
||||
|
||||
Widget _buildBody(
|
||||
ThemeData theme, LoadingState<List<Article>?> loadingState) {
|
||||
ThemeData theme, LoadingState<List<SpaceArticleItem>?> loadingState) {
|
||||
return switch (loadingState) {
|
||||
Loading() => SliverPadding(
|
||||
padding: EdgeInsets.only(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/stat/stat.dart';
|
||||
import 'package:PiliPlus/models/dynamics/article_list/article.dart';
|
||||
import 'package:PiliPlus/models/space_article/item.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
@@ -11,7 +11,7 @@ class ArticleListItem extends StatelessWidget {
|
||||
required this.item,
|
||||
});
|
||||
|
||||
final Article item;
|
||||
final SpaceArticleItem item;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -1064,7 +1064,7 @@ List<SettingsModel> get videoSettings => [
|
||||
title: '默认画质',
|
||||
leading: const Icon(Icons.video_settings_outlined),
|
||||
getSubtitle: () =>
|
||||
'当前画质:${VideoQualityExt.fromCode(GStorage.defaultVideoQa)!.description}',
|
||||
'当前画质:${VideoQuality.fromCode(GStorage.defaultVideoQa).description}',
|
||||
onTap: (setState) async {
|
||||
int? result = await showDialog(
|
||||
context: Get.context!,
|
||||
@@ -1089,7 +1089,7 @@ List<SettingsModel> get videoSettings => [
|
||||
title: '蜂窝网络画质',
|
||||
leading: const Icon(Icons.video_settings_outlined),
|
||||
getSubtitle: () =>
|
||||
'当前画质:${VideoQualityExt.fromCode(GStorage.defaultVideoQaCellular)!.description}',
|
||||
'当前画质:${VideoQuality.fromCode(GStorage.defaultVideoQaCellular).description}',
|
||||
onTap: (setState) async {
|
||||
int? result = await showDialog(
|
||||
context: Get.context!,
|
||||
@@ -1115,7 +1115,7 @@ List<SettingsModel> get videoSettings => [
|
||||
title: '默认音质',
|
||||
leading: const Icon(Icons.music_video_outlined),
|
||||
getSubtitle: () =>
|
||||
'当前音质:${AudioQualityExt.fromCode(GStorage.defaultAudioQa)!.description}',
|
||||
'当前音质:${AudioQuality.fromCode(GStorage.defaultAudioQa).description}',
|
||||
onTap: (setState) async {
|
||||
int? result = await showDialog(
|
||||
context: Get.context!,
|
||||
@@ -1140,7 +1140,7 @@ List<SettingsModel> get videoSettings => [
|
||||
title: '蜂窝网络音质',
|
||||
leading: const Icon(Icons.music_video_outlined),
|
||||
getSubtitle: () =>
|
||||
'当前音质:${AudioQualityExt.fromCode(GStorage.defaultAudioQaCellular)!.description}',
|
||||
'当前音质:${AudioQuality.fromCode(GStorage.defaultAudioQaCellular).description}',
|
||||
onTap: (setState) async {
|
||||
int? result = await showDialog(
|
||||
context: Get.context!,
|
||||
|
||||
@@ -1169,10 +1169,10 @@ class VideoDetailController extends GetxController
|
||||
id: data.quality!,
|
||||
baseUrl: videoUrl,
|
||||
codecs: 'avc1',
|
||||
quality: VideoQualityExt.fromCode(data.quality!)!);
|
||||
quality: VideoQuality.fromCode(data.quality!));
|
||||
setVideoHeight();
|
||||
currentDecodeFormats = VideoDecodeFormatTypeExt.fromString('avc1')!;
|
||||
currentVideoQa = VideoQualityExt.fromCode(data.quality!)!;
|
||||
currentVideoQa = VideoQuality.fromCode(data.quality!);
|
||||
if (autoPlay.value) {
|
||||
isShowCover.value = false;
|
||||
await playerInit();
|
||||
@@ -1196,7 +1196,7 @@ class VideoDetailController extends GetxController
|
||||
final List<VideoItem> allVideosList = data.dash!.video!;
|
||||
// debugPrint("allVideosList:${allVideosList}");
|
||||
// 当前可播放的最高质量视频
|
||||
int currentHighVideoQa = allVideosList.first.quality!.code;
|
||||
int currentHighVideoQa = allVideosList.first.quality.code;
|
||||
// 预设的画质为null,则当前可用的最高质量
|
||||
int resVideoQa = currentHighVideoQa;
|
||||
if (plPlayerController.cacheVideoQa! <= currentHighVideoQa) {
|
||||
@@ -1206,11 +1206,11 @@ class VideoDetailController extends GetxController
|
||||
resVideoQa =
|
||||
Utils.findClosestNumber(plPlayerController.cacheVideoQa!, numbers);
|
||||
}
|
||||
currentVideoQa = VideoQualityExt.fromCode(resVideoQa)!;
|
||||
currentVideoQa = VideoQuality.fromCode(resVideoQa);
|
||||
|
||||
/// 取出符合当前画质的videoList
|
||||
final List<VideoItem> videosList =
|
||||
allVideosList.where((e) => e.quality!.code == resVideoQa).toList();
|
||||
allVideosList.where((e) => e.quality.code == resVideoQa).toList();
|
||||
|
||||
/// 优先顺序 设置中指定解码格式 -> 当前可选的首个解码格式
|
||||
final List<FormatItem> supportFormats = data.supportFormats!;
|
||||
@@ -1274,7 +1274,7 @@ class VideoDetailController extends GetxController
|
||||
orElse: () => audiosList.first);
|
||||
audioUrl = VideoUtils.getCdnUrl(firstAudio);
|
||||
if (firstAudio.id != null) {
|
||||
currentAudioQa = AudioQualityExt.fromCode(firstAudio.id!)!;
|
||||
currentAudioQa = AudioQuality.fromCode(firstAudio.id!);
|
||||
}
|
||||
} else {
|
||||
firstAudio = AudioItem();
|
||||
|
||||
@@ -650,7 +650,7 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
final int quality = videoFormat[i].quality!;
|
||||
videoDetailCtr
|
||||
..currentVideoQa =
|
||||
VideoQualityExt.fromCode(quality)!
|
||||
VideoQuality.fromCode(quality)
|
||||
..updatePlayer();
|
||||
|
||||
// update
|
||||
@@ -659,16 +659,16 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
.checkConnectivity()
|
||||
.then((res) {
|
||||
if (res.contains(ConnectivityResult.wifi)) {
|
||||
oldQualityDesc = VideoQualityExt.fromCode(
|
||||
GStorage.defaultVideoQa)!
|
||||
oldQualityDesc = VideoQuality.fromCode(
|
||||
GStorage.defaultVideoQa)
|
||||
.description;
|
||||
setting.put(
|
||||
SettingBoxKey.defaultVideoQa,
|
||||
quality,
|
||||
);
|
||||
} else {
|
||||
oldQualityDesc = VideoQualityExt.fromCode(
|
||||
GStorage.defaultVideoQaCellular)!
|
||||
oldQualityDesc = VideoQuality.fromCode(
|
||||
GStorage.defaultVideoQaCellular)
|
||||
.description;
|
||||
setting.put(
|
||||
SettingBoxKey.defaultVideoQaCellular,
|
||||
@@ -677,7 +677,7 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
}
|
||||
});
|
||||
SmartDialog.showToast(
|
||||
"默认画质由:$oldQualityDesc 变为:${VideoQualityExt.fromCode(quality)!.description}",
|
||||
"默认画质由:$oldQualityDesc 变为:${VideoQuality.fromCode(quality).description}",
|
||||
);
|
||||
},
|
||||
// 可能包含会员解锁画质
|
||||
@@ -745,7 +745,7 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
final int quality = i.id!;
|
||||
videoDetailCtr
|
||||
..currentAudioQa =
|
||||
AudioQualityExt.fromCode(quality)!
|
||||
AudioQuality.fromCode(quality)
|
||||
..updatePlayer();
|
||||
|
||||
// update
|
||||
@@ -754,16 +754,16 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
.checkConnectivity()
|
||||
.then((res) {
|
||||
if (res.contains(ConnectivityResult.wifi)) {
|
||||
oldQualityDesc = AudioQualityExt.fromCode(
|
||||
GStorage.defaultAudioQa)!
|
||||
oldQualityDesc = AudioQuality.fromCode(
|
||||
GStorage.defaultAudioQa)
|
||||
.description;
|
||||
setting.put(
|
||||
SettingBoxKey.defaultAudioQa,
|
||||
quality,
|
||||
);
|
||||
} else {
|
||||
oldQualityDesc = AudioQualityExt.fromCode(
|
||||
GStorage.defaultAudioQaCellular)!
|
||||
oldQualityDesc = AudioQuality.fromCode(
|
||||
GStorage.defaultAudioQaCellular)
|
||||
.description;
|
||||
setting.put(
|
||||
SettingBoxKey.defaultAudioQaCellular,
|
||||
@@ -772,12 +772,12 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
}
|
||||
});
|
||||
SmartDialog.showToast(
|
||||
"默认音质由:$oldQualityDesc 变为:${AudioQualityExt.fromCode(quality)!.description}",
|
||||
"默认音质由:$oldQualityDesc 变为:${AudioQuality.fromCode(quality).description}",
|
||||
);
|
||||
},
|
||||
contentPadding:
|
||||
const EdgeInsets.only(left: 20, right: 20),
|
||||
title: Text(i.quality!),
|
||||
title: Text(i.quality),
|
||||
subtitle: Text(
|
||||
i.codecs!,
|
||||
style: subTitleStyle,
|
||||
@@ -811,7 +811,7 @@ class HeaderControlState extends State<HeaderControl> {
|
||||
// 当前视频可用的解码格式
|
||||
final List<FormatItem> videoFormat = videoInfo.supportFormats!;
|
||||
final List? list = videoFormat
|
||||
.firstWhere((FormatItem e) => e.quality == firstVideo.quality!.code)
|
||||
.firstWhere((FormatItem e) => e.quality == firstVideo.quality.code)
|
||||
.codecs;
|
||||
if (list == null) {
|
||||
SmartDialog.showToast('当前视频不支持选择解码格式');
|
||||
|
||||
Reference in New Issue
Block a user