Widget build(BuildContext context) {
final appBar = AppBar(
title: Text(
"Romantic Comedy",
),
actions: [
IconButton(
icon: Icon(Icons.search),
onPressed: () {
showSearch(
context: context,
delegate: MaterialSearch(_pagingController.itemList));
},
),
],
);
return Scaffold(
backgroundColor: Colors.black,
appBar: appBar,
body: BlocConsumer<MovieBloc, MovieState>(
listener: (context, movieState) {
},
builder: (context, movieState) {
if (movieState is MovieSuccessState) {
movieBloc.movies.addAll(movieState.movies);
}
return GridView.builder(
controller: _scrollController
..addListener(() {
if (_scrollController.offset ==
_scrollController.position.maxScrollExtent) {
context.bloc<MovieBloc>()
..isFetching = true
..add(Fetch());
}
}),
padding: EdgeInsets.only(left: 12.0, right: 12.0),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3),
itemBuilder: (context, index) => MovieTile(_movies[index]));
}));
}
After flutter_bloc v6.1.0,
Both context.bloc and context.repository are deprecated
and replaced with context.read and context.watch.
Checkout the migration guide for more information.
I think that the below code that you used means that will use bloc from the parent widget defined with BlocProvider. But because it seems that you have a bloc instance in this widget you just use that instance.
// with extensions
context.bloc<BlocA>();
// without extensions
BlocProvider.of<BlocA>(context)
Because you used movieBloc at the MovieSuccessState state,
I think you can just refer isFetching and add method using movieBloc instead of context.bloc<MovieBloc>().
return GridView.builder(
controller: _scrollController
..addListener(() {
if (_scrollController.offset ==
_scrollController.position.maxScrollExtent) {
//context.bloc<MovieBloc>()
// ..isFetching = true
// ..add(Fetch());
movieBloc.isFetching = true;
movieBloc.add(Fetch());
}
}),
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With