У меня есть экран входа в систему, где есть 2 кнопки.
Я использую пакет поставщика для управления состоянием приложения. Ниже приведен логин blo c.
class LoginBloc with ChangeNotifier {
bool _isAPICalling = false;
bool get isAPICalling => _isAPICalling;
apiCallingStatus(bool isCall) {
_isAPICalling = isCall;
notifyListeners();
}
Future<LoginResponseModel> callLoginApi(LoginReqModel _loginReqModel) =>
locator<LoginService>().login(_loginReqModel);
Future<LoginResponseModel> callFBLoginApi(SocialUser _loginReqModel) =>
locator<LoginService>().fbLogin(_loginReqModel);
}
Я использую isAPICalling для управления загрузчиком на экране входа в систему.
Ниже приведен код двух кнопок простого входа в систему и fb login.
Widget _loginBtn(LoginBloc _bloc) {
return RoundButtonWidget(
label: Translations.of(context).text('login'),
isAPICalling: _bloc.isAPICalling,
buttonTap: () {
Utils.hideKeyboard(context);
_globalFormKey.currentState.save();
if (_checkValidation()) {
_bloc.apiCallingStatus(true);
_bloc.callLoginApi(_loginReqModel).then((result) async {
_bloc.apiCallingStatus(false);
if (result.success == 1) {
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (context) => HomePage()));
} else {
Utils.openAlertDialog(result.message, context);
}
});
}
},
);
}
Widget _facebookBtn(LoginBloc _bloc) {
return RoundButtonWidget(
label: Translations.of(context).text('login'),
isAPICalling: _bloc.isAPICalling,
buttonTap: () {
Utils.hideKeyboard(context);
_globalFormKey.currentState.save();
if (_checkValidation()) {
_bloc.apiCallingStatus(true);
_bloc.callFBLoginApi(_loginReqModel).then((result) async {
_bloc.apiCallingStatus(false);
if (result.success == 1) {
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (context) => HomePage()));
} else {
Utils.openAlertDialog(result.message, context);
}
});
}
},
);
}
Здесь проблема заключается в том, что, когда я нажимаю на любую из кнопок, отображается обе кнопки загрузчика. Как я могу управлять состоянием, чтобы загрузчик отображался только для нажимаемой кнопки?