gpt4 book ai didi

flutter - 使用提供程序包,如何管理单本书以在同一页面中调用两种方法

转载 作者:行者123 更新时间:2023-12-03 04:52:34 26 4
gpt4 key购买 nike

我有2个按钮的登录屏幕。

  • Login
  • FB Login


我正在使用提供程序包来管理应用程序状态。下面是登录块。
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登录。
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);
}
});
}
},
);
}

这里的问题是,当我单击任何按钮时,将同时显示两个按钮的加载器。如何管理状态,以便加载程序仅显示可点击按钮?

最佳答案

我们无法通过使用单个bool来实现。您可以使用String对其进行管理,其中每个按钮都可以设置“FB” /“simple_login” ,请看下面

这是一个带有字符串_bloc.isAPICalling == 'FB'的示例

Widget _facebookBtn(LoginBloc _bloc) {
return RoundButtonWidget(
label: Translations.of(context).text('login'),
isAPICalling: _bloc.isAPICalling == 'FB',
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);
}
});
}
},
);
}

关于flutter - 使用提供程序包,如何管理单本书以在同一页面中调用两种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61139091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com