didvan-app/lib/views/home/media/podcast_tab_page.dart

66 lines
2.0 KiB
Dart

import 'package:didvan/models/requests/studio.dart';
import 'package:didvan/views/podcasts/podcasts_state.dart';
import 'package:didvan/views/widgets/overview/podcast.dart';
import 'package:didvan/views/widgets/state_handlers/empty_result.dart';
import 'package:didvan/views/widgets/state_handlers/state_handler.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class PodcastTabPage extends StatefulWidget {
const PodcastTabPage({super.key});
@override
State<PodcastTabPage> createState() => _PodcastTabPageState();
}
class _PodcastTabPageState extends State<PodcastTabPage> {
@override
void initState() {
super.initState();
Future.microtask(() {
context.read<PodcastsState>().init(true);
context.read<PodcastsState>().getStudios(page: 1);
});
}
@override
Widget build(BuildContext context) {
final state = context.watch<PodcastsState>();
return StateHandler<PodcastsState>(
state: state,
emptyState: EmptyResult(
onNewSearch: () {},
),
enableEmptyState: state.studios.isEmpty,
placeholder: PodcastOverview.placeholder,
builder: (context, state) {
return ListView.builder(
itemCount: state.studios.length,
itemBuilder: (context, index) {
final podcast = state.studios[index];
return Padding(
padding: const EdgeInsets.only(
bottom: 8,
left: 16,
right: 16,
),
child: PodcastOverview(
podcast: podcast,
onMarkChanged: state.changeMark,
studioRequestArgs: StudioRequestArgs(
page: state.page,
order: state.order,
search: state.search,
type: state.type,
asc: state.selectedSortTypeIndex == 1,
),
),
);
},
);
},
onRetry: () => context.read<PodcastsState>().getStudios(page: 1),
);
}
}