code cleaning + bug fixes
This commit is contained in:
parent
d869f54338
commit
24fee2221a
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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']);
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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';
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue