diff --git a/ui/lib/providers/series_details.dart b/ui/lib/providers/series_details.dart index c5411bf..d4d70d8 100644 --- a/ui/lib/providers/series_details.dart +++ b/ui/lib/providers/series_details.dart @@ -54,10 +54,12 @@ class SeriesDetails { String? name; String? originalName; String? overview; - String? path; String? posterPath; String? createdAt; List? episodes; + String? resolution; + int? storageId; + String? airDate; SeriesDetails( {this.id, @@ -65,9 +67,11 @@ class SeriesDetails { this.name, this.originalName, this.overview, - this.path, this.posterPath, this.createdAt, + this.resolution, + this.storageId, + this.airDate, this.episodes}); SeriesDetails.fromJson(Map json) { @@ -76,9 +80,11 @@ class SeriesDetails { name = json['name_cn']; originalName = json['original_name']; overview = json['overview']; - path = json['path']; posterPath = json['poster_path']; createdAt = json['created_at']; + resolution = json["resolution"]; + storageId = json["storage_id"]; + airDate = json["air_date"]; if (json['episodes'] != null) { episodes = []; json['episodes'].forEach((v) { diff --git a/ui/lib/providers/settings.dart b/ui/lib/providers/settings.dart index 6e9f3a3..4f6c725 100644 --- a/ui/lib/providers/settings.dart +++ b/ui/lib/providers/settings.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:dio/dio.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:quiver/strings.dart'; import 'package:ui/providers/APIs.dart'; diff --git a/ui/lib/tv_details.dart b/ui/lib/tv_details.dart index 925717a..5bcab0a 100644 --- a/ui/lib/tv_details.dart +++ b/ui/lib/tv_details.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:ui/providers/APIs.dart'; import 'package:ui/providers/series_details.dart'; +import 'package:ui/providers/settings.dart'; import 'package:ui/utils.dart'; import 'package:ui/weclome.dart'; import 'package:ui/widgets/progress_indicator.dart'; @@ -38,6 +39,7 @@ class _TvDetailsPageState extends ConsumerState { @override Widget build(BuildContext context) { var seriesDetails = ref.watch(seriesDetailsProvider(seriesId)); + var storage = ref.watch(storageSettingProvider); return FutureBuilder( // We listen to the pending operation, to update the UI accordingly. future: _pendingFuture, @@ -93,7 +95,7 @@ class _TvDetailsPageState extends ConsumerState { tilePadding: const EdgeInsets.fromLTRB(10, 0, 10, 0), childrenPadding: const EdgeInsets.fromLTRB(50, 0, 50, 0), initiallyExpanded: k == 0 ? false : true, - title: k == 0 ? const Text("特集") :Text("第 $k 季"), + title: k == 0 ? const Text("特集") : Text("第 $k 季"), children: m[k]!, ); list.add(seasonList); @@ -123,8 +125,32 @@ class _TvDetailsPageState extends ConsumerState { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + Row( + children: [ + Text("${details.resolution}"), + const SizedBox( + width: 30, + ), + storage.when( + data: (value) { + for (final s in value) { + if (s.id == details.storageId) { + return Text( + "${s.name}(${s.implementation})"); + } + } + return const Text("未知存储"); + }, + error: (error, stackTrace) => + Text("$error"), + loading: () => + const MyProgressIndicator()), + + ], + ), + const Divider(thickness: 1, height: 1), Text( - "${details!.name}", + "${details.name} (${details.airDate!.split("-")[0]})", style: const TextStyle( fontSize: 20, fontWeight: FontWeight.bold),