Flutter注册页面按钮点击后文本不更新,同逻辑登录页正常该如何排查?
错误点1:setState 语法使用错误
你在setState中误用了JavaScript风格的对象赋值写法:
setState(() => { _signUpButtonMessage: 'Registering...', _signUpButtonClicked: true, });
Dart中上述写法会被识别为返回一个Set集合,而非执行变量赋值,所以页面状态完全没有更新,按钮自然不会切换为禁用状态、也不会修改显示文字。
正确写法如下,两处setState都需要同步修改:
// 点击后更新状态的setState setState(() { _signUpButtonMessage = 'Registering...'; _signUpButtonClicked = true; }); // 注册完成后重置状态的setState setState(() { _signUpButtonClicked = false; _signUpButtonMessage = 'Register'; });
错误点2:变量名拼写错误
你从控制器取值时定义的变量是var name = _nameController.text;,但调用attemptRegistration接口时第一个参数传的是nome,拼写错误会直接抛出运行时异常中断逻辑执行,哪怕修正了setState语法也无法跑通完整流程。
将传参的nome修改为name即可。
修改完上述两个问题后,按钮的防重复点击、文字切换逻辑就能正常运行。
内容的提问来源于stack exchange,提问作者Victor P.
相关产品推荐
相关产品推荐

