Где вызвать context.read() - cubit
У меня вот как было, на экране авторизации я вешал contex.read() на событие кнопки. А как мне это сделать, если отправка данных должна произойти просто так (при загрузке экрана)? Без клика на что-либо
Я могу предоставить код кубита, но не знаю, нужен ли он вам -
class NewsCubit extends Cubit<NewsState> {
NewsCubit() : super(NewsLoading());
Future<void> getNews() async {
//тут отправка на сервер
if(response.statusCode == 200) {
final responseJson = json.decode(response.body) as Map<String, dynamic>;
emit(NewsLoaded(newsModel: NewsModel.fromJson(responseJson)));
}
}
Вот мой профайдер -
return BlocProvider<NewsCubit>(
create: (context) => NewsCubit(),
child: const NewsFeedBuild(),
);
и мой билд -
return BlocBuilder<NewsCubit, NewsState>(
builder: (context, state) {
//Вот куда мне это поместить, не при билде же - context.read<NewsCubit>().getNews();
if(state is NewsLoaded) {
Ответы (1 шт):
Автор решения: Vladislove
→ Ссылка
Если я правильно понял ваш вопрос - вы хотите, чтобы при каждом открытии экрана выполнялся метод getNews. Попробуйте в create прописать такой вариант:
return BlocProvider<NewsCubit>(
create: (context) => NewsCubit()..getNews(),
child: const NewsFeedBuild(),
);