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>