如何解决Flutter中‘可空表达式不能用作条件’的代码错误?
解决Flutter异步方法中可空表达式用作条件的错误
你遇到的错误根源是authProvider.register方法的返回值是可空布尔类型(bool?),Dart不允许直接把可空值作为if的判断条件,必须先确认它不为null。下面是几种可行的解决方式:
先接收返回值,再做非空+真值判断
handleSignUp() async { final registerResult = await authProvider.register( name: nameController.text, username: usernameController.text, email: emailController.text, password: passwordController.text, ); if (registerResult != null && registerResult) { // 这里写注册成功后的逻辑 } }用空值合并运算符给默认值
如果注册方法返回null时你想按“失败”处理,可以直接给个默认的false:handleSignUp() async { if (await authProvider.register( name: nameController.text, username: usernameController.text, email: emailController.text, password: passwordController.text, ) ?? false) { // 这里写注册成功后的逻辑 } }修改
register方法的返回类型(如果业务允许)
如果你的业务逻辑里,register方法不会返回null,直接把它的返回类型从Future<bool?>改成Future<bool>,这样await后得到的就是非空布尔值,能直接放到if条件里判断。
内容的提问来源于stack exchange,提问作者Muhammad Prakas
相关产品推荐
相关产品推荐

