From 43a51790b4a0d0b1f2fcc6c5ced11e68a29a5abc Mon Sep 17 00:00:00 2001 From: Gnik Droy Date: Wed, 11 May 2022 00:40:00 +0545 Subject: [PATCH] UI improvements and lowered min API Level --- android/app/build.gradle | 2 +- assets/cover_placeholder.jpg | Bin 35932 -> 5231 bytes lib/api/api.dart | 6 +-- lib/main.dart | 7 ++- lib/models.dart | 1 - lib/pages/home/favorite_shows.dart | 1 - lib/widgets/app_bar.dart | 3 +- .../better_player_custom_controls.dart | 1 - lib/widgets/catalogue.dart | 1 + lib/widgets/episode_list.dart | 30 ++++++++---- lib/widgets/show_description.dart | 25 +--------- lib/widgets/show_detail.dart | 45 +++++++++++++++++- lib/widgets/slant_gradient_container.dart | 2 +- 13 files changed, 78 insertions(+), 46 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index bfe2276..a750bb5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -44,7 +44,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.anime_tv" - minSdkVersion 27 + minSdkVersion 25 targetSdkVersion 31 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/assets/cover_placeholder.jpg b/assets/cover_placeholder.jpg index 6d96037aee9e2b6ee7e62b576f0515e7c79fb04a..f6b12c35c2f73b73e38fc69abe2074eeb3cd1c18 100644 GIT binary patch literal 5231 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 v`y^dq(hU&dkH%qLVqk)6HvUUg e.url.isNotEmpty && e.cover.isNotEmpty) .toList(); - recentEpisodes.forEach((e) { - e.cover = 'https:${e.cover}'; - }); + for (var ep in recentEpisodes) { + ep.cover = 'https:${ep.cover}'; + } return recentEpisodes; } else { log('Error: Fetch request returned status code ${response.statusCode}'); diff --git a/lib/main.dart b/lib/main.dart index b61ba06..bb2093a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -29,7 +29,12 @@ class AnimeTV extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( title: 'Anime TV', - theme: ThemeData.dark(), + theme: ThemeData.from( + colorScheme: ColorScheme.fromSeed( + seedColor: Colors.blue, + brightness: Brightness.dark, + ), + ), initialRoute: '/', routes: { '/': (context) => const Home(), diff --git a/lib/models.dart b/lib/models.dart index c94a125..74737f6 100644 --- a/lib/models.dart +++ b/lib/models.dart @@ -1,4 +1,3 @@ -import 'dart:collection'; import 'dart:convert'; import 'package:flutter/cupertino.dart'; import 'package:streaming_shared_preferences/streaming_shared_preferences.dart'; diff --git a/lib/pages/home/favorite_shows.dart b/lib/pages/home/favorite_shows.dart index 90a5e98..aa27bb2 100644 --- a/lib/pages/home/favorite_shows.dart +++ b/lib/pages/home/favorite_shows.dart @@ -1,4 +1,3 @@ -import 'package:anime_tv/api/models.dart'; import 'package:anime_tv/models.dart'; import 'package:anime_tv/routes.dart'; import 'package:anime_tv/widgets/image_card.dart'; diff --git a/lib/widgets/app_bar.dart b/lib/widgets/app_bar.dart index cc6e4ed..516d8c3 100644 --- a/lib/widgets/app_bar.dart +++ b/lib/widgets/app_bar.dart @@ -24,7 +24,6 @@ class AnimeTVAppBar extends StatelessWidget implements PreferredSizeWidget { fit: BoxFit.fitHeight, height: 50, ), - // size: 35, ); titleWidgets.add(const SizedBox(width: 15)); } @@ -42,7 +41,7 @@ class AnimeTVAppBar extends StatelessWidget implements PreferredSizeWidget { color: borderColor ?? Theme.of(context).colorScheme.primary, ), ), - elevation: 0, + elevation: 10, backgroundColor: Theme.of(context).primaryColor, title: title, ); diff --git a/lib/widgets/better_player_custom_controls.dart b/lib/widgets/better_player_custom_controls.dart index 5d240e1..20e4d41 100644 --- a/lib/widgets/better_player_custom_controls.dart +++ b/lib/widgets/better_player_custom_controls.dart @@ -203,7 +203,6 @@ class _CustomPlayerMaterialControlsState } else { Navigator.pop(context); } - ; }), const Spacer(), if (_controlsConfiguration.enablePip) diff --git a/lib/widgets/catalogue.dart b/lib/widgets/catalogue.dart index 06ad275..27fcca6 100644 --- a/lib/widgets/catalogue.dart +++ b/lib/widgets/catalogue.dart @@ -81,6 +81,7 @@ class _CatalogueState extends State catalogue[_filteredItemsIndices[index]].title, style: const TextStyle( fontSize: 16, + color: Colors.white, ), ), ), diff --git a/lib/widgets/episode_list.dart b/lib/widgets/episode_list.dart index bda20de..83a0d75 100644 --- a/lib/widgets/episode_list.dart +++ b/lib/widgets/episode_list.dart @@ -21,8 +21,10 @@ class EpisodeList extends StatelessWidget { return PreferenceBuilder( preference: watchedUrls.preference, builder: (BuildContext context, _) { + final bool isWatched = watchedUrls.isPresent(ep.url); + final opacity = isWatched ? 0.6 : 1.0; return Padding( - padding: const EdgeInsets.symmetric(vertical: 5), + padding: const EdgeInsets.all(5), child: SizedBox( width: double.infinity, child: ElevatedButton.icon( @@ -36,16 +38,26 @@ class EpisodeList extends StatelessWidget { arguments: ep.url, ); }, - icon: Icon(Icons.play_circle, - color: watchedUrls.isPresent(ep.url) - ? Colors.grey - : Colors.white), + icon: Opacity( + opacity: opacity, + child: const Icon( + Icons.play_circle, + color: Colors.white, + ), + ), label: Padding( padding: const EdgeInsets.all(18), - child: Text( - ep.title, - maxLines: 2, - overflow: TextOverflow.ellipsis, + child: Align( + alignment: Alignment.centerLeft, + child: Opacity( + opacity: opacity, + child: Text( + ep.title, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: const TextStyle(color: Colors.white), + ), + ), ), ), ), diff --git a/lib/widgets/show_description.dart b/lib/widgets/show_description.dart index b3faaa2..2581a5c 100644 --- a/lib/widgets/show_description.dart +++ b/lib/widgets/show_description.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:anime_tv/api/models.dart'; import 'package:provider/provider.dart'; import 'package:streaming_shared_preferences/streaming_shared_preferences.dart'; -import 'package:anime_tv/utils.dart'; class ShowDescription extends StatefulWidget { const ShowDescription({Key? key, required this.details}) : super(key: key); @@ -33,7 +32,7 @@ class _ShowDescriptionState extends State { final episodeText = widget.details.episodeList.isEmpty ? '' - : '${widget.details.episodeList.length} Episodes'; + : 'Episodes: ${widget.details.episodeList.length}'; final controls = Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -59,29 +58,9 @@ class _ShowDescriptionState extends State { ); }); }), - // IconButton( - // onPressed: () => {}, - // icon: Icon(Icons.star, color: true ? Colors.amber : null), - // ), ], ); - final genreTags = Wrap( - spacing: 8, - runSpacing: 8, - children: widget.details.genreList - .map((x) => Chip( - backgroundColor: Colors - .primaries[x.hashCode % Colors.primaries.length] - .darken(), - label: Text( - x, - style: const TextStyle(color: Colors.white), - ), - )) - .toList(), - ); - final plot = Text( widget.details.description, style: const TextStyle(fontSize: 16, height: 1.4), @@ -96,8 +75,6 @@ class _ShowDescriptionState extends State { controls, const SizedBox(height: 15), plot, - const SizedBox(height: 15), - genreTags, ], ), ); diff --git a/lib/widgets/show_detail.dart b/lib/widgets/show_detail.dart index cdf0db2..8371c1a 100644 --- a/lib/widgets/show_detail.dart +++ b/lib/widgets/show_detail.dart @@ -4,6 +4,7 @@ import 'package:anime_tv/api/api.dart'; import 'package:anime_tv/api/models.dart'; import 'package:anime_tv/widgets/episode_list.dart'; import 'package:anime_tv/widgets/show_description.dart'; +import 'package:anime_tv/utils.dart'; class ShowDetailView extends StatefulWidget { final String url; @@ -42,7 +43,7 @@ class _ShowDetailViewState extends State { builder: (context, AsyncSnapshot snapshot) { if (snapshot.hasData) { final cover = SizedBox( - height: MediaQuery.of(context).size.height / 2.0, + height: double.infinity, width: double.infinity, child: FadeInImage( image: (snapshot.data!.image.isEmpty @@ -53,6 +54,46 @@ class _ShowDetailViewState extends State { ), ); + final genreTags = Wrap( + spacing: 8, + runSpacing: 8, + children: snapshot.data!.genreList + .map( + (genre) => Chip( + visualDensity: VisualDensity.compact, + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + backgroundColor: Colors + .primaries[genre.hashCode % Colors.accents.length] + .darken(), + label: Text( + genre, + style: const TextStyle(color: Colors.white), + ), + ), + ) + .toList(), + ); + + final stack = SizedBox( + width: double.infinity, + height: MediaQuery.of(context).size.height / 2.5, + child: Stack( + alignment: Alignment.bottomLeft, + children: [ + cover, + Container( + height: double.infinity, + width: double.infinity, + color: Colors.black12, + ), + Padding( + child: genreTags, + padding: const EdgeInsets.all(8), + ), + ], + ), + ); + return RefreshIndicator( onRefresh: onRefresh, child: ListView( @@ -60,7 +101,7 @@ class _ShowDetailViewState extends State { parent: AlwaysScrollableScrollPhysics(), ), children: [ - cover, + stack, ShowDescription(details: snapshot.data!), EpisodeList( details: snapshot.data!, diff --git a/lib/widgets/slant_gradient_container.dart b/lib/widgets/slant_gradient_container.dart index e62d685..19ac776 100644 --- a/lib/widgets/slant_gradient_container.dart +++ b/lib/widgets/slant_gradient_container.dart @@ -20,8 +20,8 @@ class SlantGradientBackgroundContainer extends StatelessWidget { end: Alignment.bottomRight, colors: colors ?? [ + Theme.of(context).scaffoldBackgroundColor.lighten(0.05), Theme.of(context).scaffoldBackgroundColor, - Theme.of(context).scaffoldBackgroundColor.darken(), ]), ), child: child,