From 24fee2221aa1701d2baa657da10dd4eb4c9265bf Mon Sep 17 00:00:00 2001 From: MohammadTaha Basiri Date: Fri, 25 Mar 2022 22:25:25 +0430 Subject: [PATCH] code cleaning + bug fixes --- .../studio_details/studio_details.mobile.dart | 2 ++ .../studio_details/studio_details.web.dart | 1 + .../studio_details/studio_details_state.dart | 7 ++++++- .../widgets/studio_details_widget.dart | 19 ++++++++++++++++++- lib/views/home/widgets/overview/podcast.dart | 3 --- lib/views/home/widgets/overview/video.dart | 3 --- 6 files changed, 27 insertions(+), 8 deletions(-) diff --git a/lib/views/home/studio/studio_details/studio_details.mobile.dart b/lib/views/home/studio/studio_details/studio_details.mobile.dart index 05e0ba6..a8d51f1 100644 --- a/lib/views/home/studio/studio_details/studio_details.mobile.dart +++ b/lib/views/home/studio/studio_details/studio_details.mobile.dart @@ -100,6 +100,7 @@ class _StudioDetailsState extends State { return true; }, child: DidvanScaffold( + key: ValueKey(state.studio.id), scrollController: _scrollController, backgroundColor: Theme.of(context).colorScheme.surface, padding: EdgeInsets.zero, @@ -173,6 +174,7 @@ class _StudioDetailsState extends State { ), const SizedBox(height: 20), StudioDetailsWidget( + scrollController: _scrollController, onCommentsTabSelected: () => Future.delayed( const Duration(milliseconds: 100), () => _scrollController.animateTo( diff --git a/lib/views/home/studio/studio_details/studio_details.web.dart b/lib/views/home/studio/studio_details/studio_details.web.dart index 7993fcf..c3040ff 100644 --- a/lib/views/home/studio/studio_details/studio_details.web.dart +++ b/lib/views/home/studio/studio_details/studio_details.web.dart @@ -193,6 +193,7 @@ class _StudioDetailsState extends State { ), const SizedBox(height: 20), StudioDetailsWidget( + scrollController: _scrollController, onCommentsTabSelected: () => Future.delayed( const Duration(milliseconds: 100), () => _scrollController.animateTo( diff --git a/lib/views/home/studio/studio_details/studio_details_state.dart b/lib/views/home/studio/studio_details/studio_details_state.dart index f37d4cd..89bd1ff 100644 --- a/lib/views/home/studio/studio_details/studio_details_state.dart +++ b/lib/views/home/studio/studio_details/studio_details_state.dart @@ -53,11 +53,16 @@ class StudioDetailsState extends CoreProvier { studio = prevStudio!; prevStudio = null; } + notifyListeners(); _handlePodcastPlayback(studio); } - appState = AppState.busy; + if (isForward == null) { + appState = AppState.busy; + } final service = RequestService(RequestHelper.studioDetails(id, this.args)); await service.httpGet(); + nextStudio = null; + prevStudio = null; if (service.isSuccess) { final result = service.result; studio = StudioDetailsData.fromJson(result['studio']); diff --git a/lib/views/home/studio/studio_details/widgets/studio_details_widget.dart b/lib/views/home/studio/studio_details/widgets/studio_details_widget.dart index fe5fec4..6c99823 100644 --- a/lib/views/home/studio/studio_details/widgets/studio_details_widget.dart +++ b/lib/views/home/studio/studio_details/widgets/studio_details_widget.dart @@ -1,3 +1,4 @@ +import 'package:didvan/config/design_config.dart'; import 'package:didvan/config/theme_data.dart'; import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/models/studio_details_data.dart'; @@ -14,11 +15,13 @@ import 'package:provider/provider.dart'; class StudioDetailsWidget extends StatelessWidget { final StudioDetailsData studio; + final ScrollController? scrollController; final VoidCallback onCommentsTabSelected; const StudioDetailsWidget({ Key? key, required this.studio, required this.onCommentsTabSelected, + this.scrollController, }) : super(key: key); bool get _isVideo => studio.media.contains('ifram'); @@ -94,11 +97,13 @@ class StudioDetailsWidget extends StatelessWidget { _StudioPreview( isNext: true, studio: state.nextStudio!, + scrollController: scrollController, ), if (state.prevStudio != null) _StudioPreview( isNext: false, studio: state.prevStudio!, + scrollController: scrollController, ), const SizedBox(), ], @@ -219,7 +224,12 @@ class _TabItem extends StatelessWidget { class _StudioPreview extends StatelessWidget { final bool isNext; final StudioDetailsData studio; - const _StudioPreview({Key? key, required this.isNext, required this.studio}) + final ScrollController? scrollController; + const _StudioPreview( + {Key? key, + required this.isNext, + required this.studio, + this.scrollController}) : super(key: key); String get _previewTitle { @@ -239,6 +249,11 @@ class _StudioPreview extends StatelessWidget { args: state.args, isForward: isNext, ); + scrollController?.animateTo( + 0, + duration: DesignConfig.lowAnimationDuration, + curve: Curves.easeIn, + ); }, child: Container( width: 88, @@ -264,6 +279,8 @@ class _StudioPreview extends StatelessWidget { const SizedBox(height: 8), DidvanText( studio.title, + maxLines: 3, + overflow: TextOverflow.ellipsis, textAlign: TextAlign.center, style: Theme.of(context).textTheme.overline, color: Theme.of(context).colorScheme.caption, diff --git a/lib/views/home/widgets/overview/podcast.dart b/lib/views/home/widgets/overview/podcast.dart index e674955..6aa2ed9 100644 --- a/lib/views/home/widgets/overview/podcast.dart +++ b/lib/views/home/widgets/overview/podcast.dart @@ -1,15 +1,12 @@ import 'package:didvan/config/theme_data.dart'; -import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/models/overview_data.dart'; import 'package:didvan/models/requests/studio.dart'; import 'package:didvan/utils/date_time.dart'; import 'package:didvan/views/home/studio/studio_details/studio_details_state.dart'; -import 'package:didvan/views/home/studio/studio_state.dart'; import 'package:didvan/views/home/widgets/bookmark_button.dart'; import 'package:didvan/views/home/widgets/duration_widget.dart'; import 'package:didvan/views/widgets/didvan/card.dart'; import 'package:didvan/views/widgets/didvan/divider.dart'; -import 'package:didvan/views/widgets/didvan/icon_button.dart'; import 'package:didvan/views/widgets/didvan/text.dart'; import 'package:didvan/views/widgets/shimmer_placeholder.dart'; import 'package:didvan/views/widgets/skeleton_image.dart'; diff --git a/lib/views/home/widgets/overview/video.dart b/lib/views/home/widgets/overview/video.dart index ea8a81c..704b28f 100644 --- a/lib/views/home/widgets/overview/video.dart +++ b/lib/views/home/widgets/overview/video.dart @@ -4,17 +4,14 @@ import 'package:didvan/models/overview_data.dart'; import 'package:didvan/models/requests/studio.dart'; import 'package:didvan/routes/routes.dart'; import 'package:didvan/utils/date_time.dart'; -import 'package:didvan/views/home/studio/studio_state.dart'; import 'package:didvan/views/home/widgets/bookmark_button.dart'; import 'package:didvan/views/home/widgets/duration_widget.dart'; import 'package:didvan/views/widgets/didvan/card.dart'; import 'package:didvan/views/widgets/didvan/divider.dart'; -import 'package:didvan/views/widgets/didvan/icon_button.dart'; import 'package:didvan/views/widgets/didvan/text.dart'; import 'package:didvan/views/widgets/shimmer_placeholder.dart'; import 'package:didvan/views/widgets/skeleton_image.dart'; import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class VideoOverview extends StatelessWidget { final OverviewData video;