Flutter - 参数类型“String”不能分配给参数类型“Uri”[重复]

Posted

技术标签:

【中文标题】Flutter - 参数类型“String”不能分配给参数类型“Uri”[重复]【英文标题】:Flutter - The argument type 'String' can't be assigned to the parameter type 'Uri' [duplicate] 【发布时间】:2021-06-27 19:35:02 【问题描述】:

所以,我正在尝试在 dart 中创建登录/注册表单:

    // SERVER LOGIN API URL
    var url = 'https://www.mywebsite.com/apicall.php';

    // Store all data with Param Name.
    var data = 'email': email, 'password': password;

    // Starting Web API Call.
    var response = await http.post(url, body: json.encode(data));

但我得到这个错误:

Error: The argument type 'String' can't be assigned to the parameter type 'Uri'.
 - 'Uri' is from 'dart:core'.
    var response = await http.post(url, body: json.encode(data));

有什么办法解决吗?

【问题讨论】:

正确方式:var response = await http.post(Uri.parse(url), body: json.encode(data)); 问:有什么办法可以解决这个问题?答:是的。例如var url = Uri.parse(''https://www.mywebsite.com/apicall.php'); http.post() 需要一个 Uri 对象。 “字符串”是一种 DIFFERENT 类型的对象。 Uri.parse() 是从“字符串”初始化“Uri”的一种方法。 这能回答你的问题吗? The argument type 'String' can't be assigned to the parameter type 'Uri' BTW,很容易搜索关于特定错误消息的现有问题。 【参考方案1】:

http.post 需要一个 Uri 而不是一个字符串。试试这个:

var uri = Uri.parse('https://www.mywebsite.com/apicall.php');
var response = await http.post(uri , body: json.encode(data));

【讨论】:

【参考方案2】:

这里的错误非常明确,您使用的参数 url 不应该是字符串,而应该是对象 Uri。 您应该参考sample of the http library 以了解如何轻松使用此库:)

【讨论】:

以上是关于Flutter - 参数类型“String”不能分配给参数类型“Uri”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 参数类型“String”不能分配给参数类型“Uri”[重复]

在 Flutter 中获取请求:- 'String' 不能分配给参数类型'Uri' [重复]

Flutter - 参数类型“Object”不能分配给参数类型“Map<String, dynamic>”

Flutter-Firestore “参数类型 'Map<String, dynamic> Function()' 不能分配给参数类型 'Map<String, dynamic>

Flutter Future <String> 不能分配给参数类型字符串

Flutter http 优雅的处理@RquestParam参数