feat: add detail tv ui

This commit is contained in:
Simon Ding
2024-07-14 13:12:46 +08:00
parent 42645adc49
commit 050441b187
3 changed files with 37 additions and 6 deletions

View File

@@ -54,10 +54,12 @@ class SeriesDetails {
String? name;
String? originalName;
String? overview;
String? path;
String? posterPath;
String? createdAt;
List<Episodes>? 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<String, dynamic> 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 = <Episodes>[];
json['episodes'].forEach((v) {

View File

@@ -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';

View File

@@ -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<TvDetailsPage> {
@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<TvDetailsPage> {
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<TvDetailsPage> {
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),