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]));
}));
}
The method 'bloc' isn't defined for the type 'BuildContext'
Asked Answered
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.
perfect solution for me , big thanks –
Belostok
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());
}
}),
Sorry , I need to access bloc from parent –
Painting
Through 'movieBloc.movies.addAll(movieState.movies);', I think that there is a bloc instance in this widget already. With your bloc version and Adnan Alshami's comment, it seems that you need to migrate. –
Ellswerth
© 2022 - 2024 — McMap. All rights reserved.
flutter_bloc
you are using? afterv6.1.0
bothcontext.bloc
andcontext.repository
are deprecated in favor ofcontext.read
andcontext.watch
checkout the migration guide – Kail