Flutter中Uri.parse报错:String无法分配给int类型参数的解决方法
Flutter中Uri.parse报错:String无法赋值给int类型的问题
错误信息
Error: The argument type 'String' can't be assigned to the parameter type 'int'.
final loginUri = Uri.parse(Config.apiURL, Config.loginAPI);
^
问题代码
class Config { static const String appName = "appName"; static const String apiURL = http://127.0.0.1:8000/; // 此处缺少字符串引号,属于语法错误 static const String loginAPI = "api/dj-rest-auth/login/"; } class AuthService { final loginUri = Uri.parse(Config.apiURL, Config.loginAPI); }
错误原因
Uri.parse()方法仅接受单个字符串参数,你传入两个字符串时,第二个参数Config.loginAPI会被匹配到该方法的可选参数start,而start的类型要求是int,因此触发了字符串无法赋值给int类型的错误。同时你的Config.apiURL定义时未添加字符串引号,这也是需要修正的语法问题。
修复方案
方案1:拼接完整URL后解析
先将基础API地址与登录接口路径拼接成完整字符串,再传入Uri.parse():
class Config { static const String appName = "appName"; static const String apiURL = "http://127.0.0.1:8000/"; // 补上字符串引号 static const String loginAPI = "api/dj-rest-auth/login/"; } class AuthService { final loginUri = Uri.parse('${Config.apiURL}${Config.loginAPI}'); }
方案2:使用Uri.http构造方法(更规范)
利用Uri.http直接拼接主机地址和接口路径,避免手动拼接字符串的潜在问题:
class Config { static const String appName = "appName"; static const String apiHost = "127.0.0.1:8000"; static const String loginAPI = "api/dj-rest-auth/login/"; } class AuthService { final loginUri = Uri.http(Config.apiHost, Config.loginAPI); }
内容的提问来源于stack exchange,提问作者Shiko
相关产品推荐
相关产品推荐

