#flutter #bloc #flutter-bloc #flutter-cubit
Вопрос:
Я новичок в Флаттере и использую блок для государственного управления. У меня два экрана
- Экран регистрации
- Экран проверки
В разделе «Экран регистрации» я добавил своего блочного пользователя, как показано ниже
child: Center(
child: Column(
children: [
BlocConsumer<RegistrationCubit, RegistrationState>(
builder: (context, state) {
return state.maybeWhen(null,
setUpRegistration: () =>
createRegistrationForm(context),
orElse: () {
return createRegistrationForm(context);
});
},
listener: (context, state) {
state.maybeWhen(null,
registrationInProgress: () => {
showLoader(true),
},
registrationResponseReceived: (response) =>
requestForOTPOnSuccess(context, response),
registrationFailedGeneric: () =>
registrationFailureGeneric(
context,
"Error in registration",
"Something went wrong"),
orElse: () {});
},
),
],
),
),
Как только мы получим успех от службы, мы перейдем на «Экран проверки» из «Экран регистрации».
И в «Экране проверки» я пытаюсь повторно использовать кубит регистрации в блоклистере, как показано ниже (снова вызов службы регистрации по нажатию кнопки)
BlocListener<RegistrationCubit, RegistrationState>(
listener: (context, st) {
st.maybeWhen(null,
registrationInProgress: () => {
showLoader(true),
},
registrationResponseReceived: (_) => showGenericAlert(
context,
'My App',
'Code sent mobile number.'),
registrationFailedGeneric: () => showGenericAlert(context,
'Error', 'An error occurred. Please try again later.'),
orElse: () {});
},
child: Container(),
)
Но вместо вызова блоклистенера «Проверка экрана» вызываются слушатели «Экран регистрации».
Не могли бы вы объяснить, почему слушатели «Экрана регистрации» вызываются из «Экрана проверки»?