code cleaning + bug fixes

This commit is contained in:
MohammadTaha Basiri 2022-03-25 22:25:25 +04:30
parent d869f54338
commit 24fee2221a
6 changed files with 27 additions and 8 deletions

View File

@ -100,6 +100,7 @@ class _StudioDetailsState extends State<StudioDetails> {
return true; return true;
}, },
child: DidvanScaffold( child: DidvanScaffold(
key: ValueKey(state.studio.id),
scrollController: _scrollController, scrollController: _scrollController,
backgroundColor: Theme.of(context).colorScheme.surface, backgroundColor: Theme.of(context).colorScheme.surface,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
@ -173,6 +174,7 @@ class _StudioDetailsState extends State<StudioDetails> {
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
StudioDetailsWidget( StudioDetailsWidget(
scrollController: _scrollController,
onCommentsTabSelected: () => Future.delayed( onCommentsTabSelected: () => Future.delayed(
const Duration(milliseconds: 100), const Duration(milliseconds: 100),
() => _scrollController.animateTo( () => _scrollController.animateTo(

View File

@ -193,6 +193,7 @@ class _StudioDetailsState extends State<StudioDetails> {
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
StudioDetailsWidget( StudioDetailsWidget(
scrollController: _scrollController,
onCommentsTabSelected: () => Future.delayed( onCommentsTabSelected: () => Future.delayed(
const Duration(milliseconds: 100), const Duration(milliseconds: 100),
() => _scrollController.animateTo( () => _scrollController.animateTo(

View File

@ -53,11 +53,16 @@ class StudioDetailsState extends CoreProvier {
studio = prevStudio!; studio = prevStudio!;
prevStudio = null; prevStudio = null;
} }
notifyListeners();
_handlePodcastPlayback(studio); _handlePodcastPlayback(studio);
} }
appState = AppState.busy; if (isForward == null) {
appState = AppState.busy;
}
final service = RequestService(RequestHelper.studioDetails(id, this.args)); final service = RequestService(RequestHelper.studioDetails(id, this.args));
await service.httpGet(); await service.httpGet();
nextStudio = null;
prevStudio = null;
if (service.isSuccess) { if (service.isSuccess) {
final result = service.result; final result = service.result;
studio = StudioDetailsData.fromJson(result['studio']); studio = StudioDetailsData.fromJson(result['studio']);

View File

@ -1,3 +1,4 @@
import 'package:didvan/config/design_config.dart';
import 'package:didvan/config/theme_data.dart'; import 'package:didvan/config/theme_data.dart';
import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/constants/app_icons.dart';
import 'package:didvan/models/studio_details_data.dart'; import 'package:didvan/models/studio_details_data.dart';
@ -14,11 +15,13 @@ import 'package:provider/provider.dart';
class StudioDetailsWidget extends StatelessWidget { class StudioDetailsWidget extends StatelessWidget {
final StudioDetailsData studio; final StudioDetailsData studio;
final ScrollController? scrollController;
final VoidCallback onCommentsTabSelected; final VoidCallback onCommentsTabSelected;
const StudioDetailsWidget({ const StudioDetailsWidget({
Key? key, Key? key,
required this.studio, required this.studio,
required this.onCommentsTabSelected, required this.onCommentsTabSelected,
this.scrollController,
}) : super(key: key); }) : super(key: key);
bool get _isVideo => studio.media.contains('ifram'); bool get _isVideo => studio.media.contains('ifram');
@ -94,11 +97,13 @@ class StudioDetailsWidget extends StatelessWidget {
_StudioPreview( _StudioPreview(
isNext: true, isNext: true,
studio: state.nextStudio!, studio: state.nextStudio!,
scrollController: scrollController,
), ),
if (state.prevStudio != null) if (state.prevStudio != null)
_StudioPreview( _StudioPreview(
isNext: false, isNext: false,
studio: state.prevStudio!, studio: state.prevStudio!,
scrollController: scrollController,
), ),
const SizedBox(), const SizedBox(),
], ],
@ -219,7 +224,12 @@ class _TabItem extends StatelessWidget {
class _StudioPreview extends StatelessWidget { class _StudioPreview extends StatelessWidget {
final bool isNext; final bool isNext;
final StudioDetailsData studio; 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); : super(key: key);
String get _previewTitle { String get _previewTitle {
@ -239,6 +249,11 @@ class _StudioPreview extends StatelessWidget {
args: state.args, args: state.args,
isForward: isNext, isForward: isNext,
); );
scrollController?.animateTo(
0,
duration: DesignConfig.lowAnimationDuration,
curve: Curves.easeIn,
);
}, },
child: Container( child: Container(
width: 88, width: 88,
@ -264,6 +279,8 @@ class _StudioPreview extends StatelessWidget {
const SizedBox(height: 8), const SizedBox(height: 8),
DidvanText( DidvanText(
studio.title, studio.title,
maxLines: 3,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: Theme.of(context).textTheme.overline, style: Theme.of(context).textTheme.overline,
color: Theme.of(context).colorScheme.caption, color: Theme.of(context).colorScheme.caption,

View File

@ -1,15 +1,12 @@
import 'package:didvan/config/theme_data.dart'; 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/overview_data.dart';
import 'package:didvan/models/requests/studio.dart'; import 'package:didvan/models/requests/studio.dart';
import 'package:didvan/utils/date_time.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_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/bookmark_button.dart';
import 'package:didvan/views/home/widgets/duration_widget.dart'; import 'package:didvan/views/home/widgets/duration_widget.dart';
import 'package:didvan/views/widgets/didvan/card.dart'; import 'package:didvan/views/widgets/didvan/card.dart';
import 'package:didvan/views/widgets/didvan/divider.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/didvan/text.dart';
import 'package:didvan/views/widgets/shimmer_placeholder.dart'; import 'package:didvan/views/widgets/shimmer_placeholder.dart';
import 'package:didvan/views/widgets/skeleton_image.dart'; import 'package:didvan/views/widgets/skeleton_image.dart';

View File

@ -4,17 +4,14 @@ import 'package:didvan/models/overview_data.dart';
import 'package:didvan/models/requests/studio.dart'; import 'package:didvan/models/requests/studio.dart';
import 'package:didvan/routes/routes.dart'; import 'package:didvan/routes/routes.dart';
import 'package:didvan/utils/date_time.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/bookmark_button.dart';
import 'package:didvan/views/home/widgets/duration_widget.dart'; import 'package:didvan/views/home/widgets/duration_widget.dart';
import 'package:didvan/views/widgets/didvan/card.dart'; import 'package:didvan/views/widgets/didvan/card.dart';
import 'package:didvan/views/widgets/didvan/divider.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/didvan/text.dart';
import 'package:didvan/views/widgets/shimmer_placeholder.dart'; import 'package:didvan/views/widgets/shimmer_placeholder.dart';
import 'package:didvan/views/widgets/skeleton_image.dart'; import 'package:didvan/views/widgets/skeleton_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class VideoOverview extends StatelessWidget { class VideoOverview extends StatelessWidget {
final OverviewData video; final OverviewData video;