0% found this document useful (0 votes)
19 views2 pages

New Text Document

Uploaded by

Arqan Purusa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views2 pages

New Text Document

Uploaded by

Arqan Purusa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

import 'package:flutter/material.

dart';
import 'package:flutter_movie_streaming_app/movie/models/movie.dart';
import 'package:flutter_movie_streaming_app/movie/pages/movie_detail_page.dart';
import
'package:flutter_movie_streaming_app/movie/providers/movie_get_now_playing_provider
.dart';
import
'package:flutter_movie_streaming_app/movie/providers/movie_get_top_rated_provider.d
art';
import 'package:flutter_movie_streaming_app/widgets/item_model_widget.dart';
import 'package:provider/provider.dart';

import
'package:flutter_movie_streaming_app/movie/providers/movie_get_discover_provider.da
rt';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';

enum TypeMovie { discover, popular, nowPlaying }

class MoviePaginationPage extends StatefulWidget {


const MoviePaginationPage({
super.key,
required this.type,
});
final TypeMovie type;
@override
State<MoviePaginationPage> createState() => _MoviePaginationPageState();
}

class _MoviePaginationPageState extends State<MoviePaginationPage> {


final PagingController<int, MovieModel> _pagingController =
PagingController(firstPageKey: 1);

@override
void initState() {
switch (widget.type) {
case TypeMovie.discover:
_pagingController.addPageRequestListener((pageKey) {
context.read<MovieGetDiscoverProvider>().getDiscoverWithPaging(
context,
pagingController: _pagingController,
page: pageKey);
});
super.initState();
break;
case TypeMovie.popular:
_pagingController.addPageRequestListener((pageKey) {
context.read<MovieGetTopRatedProvider>().getPopularWithPaging(context,
pagingController: _pagingController, page: pageKey);
});
break;
case TypeMovie.nowPlaying:
_pagingController.addPageRequestListener((pageKey) {
context.read<MovieGetNowPlayingProvider>().getNowPlayingWithPaging(
context,
pagingController: _pagingController,
page: pageKey);
});
break;
}
super.initState();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Builder(builder: (_) {
switch (widget.type) {
case TypeMovie.discover:
return const Text('Discover Movies');
case TypeMovie.popular:
return const Text('Top Rated Movies');
case TypeMovie.nowPlaying:
return const Text('Now Playing Movies');
}
}),
),
body: PagedListView.separated(
pagingController: _pagingController,
padding: const EdgeInsets.all(16.0),
builderDelegate: PagedChildBuilderDelegate<MovieModel>(
itemBuilder: (context, item, index) {
return ItemMovieWidget(
movie: item,
heightBackdrop: 260,
widthBackdrop: double.infinity,
heightPoster: 140,
widthPoster: 80,
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) {
return MovieDetailPage(id: item.id);
},
),
);
},
);
},
),
separatorBuilder: (context, index) {
return const SizedBox(
height: 10,
);
},
),
);
}

@override
void dispose() {
_pagingController.dispose();
super.dispose();
}
}

You might also like