You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:30:51