Reputation: 2146
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]));
}));
}
Upvotes: 13
Views: 7693
Reputation: 1059
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.
Upvotes: 32
Reputation: 7492
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());
}
}),
Upvotes: 1