проблема с добавлением события в блок в flutter_bloc

Я использую пакет Flutter_bloc, чтобы сделать телефонную аутентификацию во flutte, все работает хорошо, но мой вопрос заключается в добавлении событий в блок, например, в моем приложении, когда я нажимаю кнопку, как этот код ниже, событие добавляется в мой loginBloc , и все работает хорошо, но когда я нажимаю кнопку возврата на устройстве Android, а затем возвращаюсь обратно с помощью обычного navigater.pushNamed и снова нажимаю кнопку, ничего не происходит? что значит событие не добавлено в блок или что-то в этом роде? кто-нибудь может объяснить эту проблему? заранее спасибо: это мой пример кода для добавления события при нажатии кнопки:

 child: RaisedButton(
              onPressed: () {
                if (_formKey.currentState.validate()) {
                  loginBloc.add(LoginPressesEvent(
                      phoNo: _phoneTextController.value.text));
                }
              },

person Osama Mohammed    schedule 22.10.2020    source источник
comment
показать еще код ::::   -  person Addell El-haddad    schedule 22.10.2020
comment
когда вы нажимаете кнопку «Назад», происходит возврат на предыдущую страницу, но если вы этого не сделаете, все работает нормально?   -  person Yahya parvar    schedule 22.10.2020


Ответы (1)


Чтобы добавить «Событие» в «Блок», используйте этот код:

BlocProvider.of<'YourBlocClass'>('blocContext').add('YourEvent()'));

blocContext - это параметр контекста слушателя в BlocListener:

BlocProvider(
      create: (context) => BlocClass()..add(Fetch()),
      child: BlocListener<BlocClass, BaseState>(
            listener: (listenerContext, state) {
                // listenerContext: store this parameter to Field
                // and use that everywhere in your StateClass
            },

или параметр контекста 'builder in Bloc Builder`

BlocProvider(
      create: (context) => BlocClass()..add(Fetch()),
      child: BlocBuilder<IndexBloc, BaseState>(
            builder: (builderContext, state) {
                // builderContext: store this parameter to Field
                // and use that everywhere in your StateClass
            },
person Saeed Fekri    schedule 22.10.2020
comment
но я не могу этого сделать, во-первых, я определяю (BlocProvider (create: (context) = ›BlocClass () .. add (Fetch ()),) в main.dart, потому что я использую MultiBlocProvider), во-вторых, во многих случаях я просто нужно добавить событие, чтобы ничего не создавать, так почему я должен использовать BlocBuilder или BlocListener? - person Osama Mohammed; 23.10.2020