From aeb59f3bb95a02ec5991cac06c04b1f539fe2741 Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Fri, 19 Jul 2024 10:37:08 +0800 Subject: [PATCH] add backgroud image --- server/watchlist.go | 4 +- ui/lib/tv_details.dart | 167 ++++++++++++++++++++++------------------- 2 files changed, 91 insertions(+), 80 deletions(-) diff --git a/server/watchlist.go b/server/watchlist.go index 0bd3449..eb49917 100644 --- a/server/watchlist.go +++ b/server/watchlist.go @@ -180,13 +180,13 @@ func (s *Server) AddMovie2Watchlist(c *gin.Context) (interface{}, error) { func (s *Server) downloadBackdrop(path string, mediaID int) error { url := "https://image.tmdb.org/t/p/original" + path - return s.downloadImage(url, mediaID, "backdrop.ipg") + return s.downloadImage(url, mediaID, "backdrop.jpg") } func (s *Server) downloadPoster(path string, mediaID int) error { var url = "https://image.tmdb.org/t/p/original" + path - return s.downloadImage(url, mediaID, "poster.ipg") + return s.downloadImage(url, mediaID, "poster.jpg") } func (s *Server) downloadImage(url string, mediaID int, name string) error { diff --git a/ui/lib/tv_details.dart b/ui/lib/tv_details.dart index 22f50c4..4b98a20 100644 --- a/ui/lib/tv_details.dart +++ b/ui/lib/tv_details.dart @@ -66,10 +66,10 @@ class _TvDetailsPageState extends ConsumerState { IconButton( onPressed: () async { var f = ref - .read( - mediaDetailsProvider(widget.seriesId).notifier) - .searchAndDownload(widget.seriesId, ep.seasonNumber!, - ep.episodeNumber!); + .read(mediaDetailsProvider(widget.seriesId) + .notifier) + .searchAndDownload(widget.seriesId, + ep.seasonNumber!, ep.episodeNumber!); setState(() { _pendingFuture = f; }); @@ -79,7 +79,9 @@ class _TvDetailsPageState extends ConsumerState { } }, icon: const Icon(Icons.search)), - const SizedBox(width: 10,), + const SizedBox( + width: 10, + ), IconButton( onPressed: () {}, icon: const Icon(Icons.manage_search)) @@ -119,83 +121,92 @@ class _TvDetailsPageState extends ConsumerState { Card( margin: const EdgeInsets.all(4), clipBehavior: Clip.hardEdge, - child: Padding( - padding: const EdgeInsets.all(10), - child: Row( - children: [ - Flexible( - flex: 1, - child: Padding( - padding: const EdgeInsets.all(10), - child: Image.network( - "${APIs.imagesUrl}/${details.id}/poster.jpg", - fit: BoxFit.contain, - headers: APIs.authHeaders, + child: Container( + decoration: BoxDecoration( + image: DecorationImage( + fit: BoxFit.fitWidth, + image: NetworkImage( + "${APIs.imagesUrl}/${details.id}/backdrop.jpg", + headers: APIs.authHeaders))), + child: Padding( + padding: const EdgeInsets.all(10), + child: Row( + children: [ + Flexible( + flex: 1, + child: Padding( + padding: const EdgeInsets.all(10), + child: Image.network( + "${APIs.imagesUrl}/${details.id}/poster.jpg", + fit: BoxFit.contain, + headers: APIs.authHeaders, + ), ), ), - ), - Flexible( - flex: 6, - child: Row( - children: [ - Expanded( - 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})"); + Flexible( + flex: 6, + child: Row( + children: [ + Expanded( + 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.originalName ? details.originalName: ''} (${details.airDate!.split("-")[0]})", - style: const TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold), - ), - const Text(""), - Text( - details.overview!, - ), - ], - )), - Column( - children: [ - IconButton( - onPressed: () { - ref - .read(mediaDetailsProvider( - widget.seriesId) - .notifier) - .delete(); - context.go(WelcomePage.routeTv); - }, - icon: const Icon(Icons.delete)) - ], - ) - ], + return const Text("未知存储"); + }, + error: (error, stackTrace) => + Text("$error"), + loading: () => + const MyProgressIndicator()), + ], + ), + const Divider(thickness: 1, height: 1), + Text( + "${details.name} ${details.name != details.originalName ? details.originalName : ''} (${details.airDate!.split("-")[0]})", + style: const TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold), + ), + const Text(""), + Text( + details.overview!, + ), + ], + )), + Column( + children: [ + IconButton( + onPressed: () { + ref + .read(mediaDetailsProvider( + widget.seriesId) + .notifier) + .delete(); + context.go(WelcomePage.routeTv); + }, + icon: const Icon(Icons.delete)) + ], + ) + ], + ), ), - ), - ], + ], + ), ), ), ),