Flutter 2升级后出现http.post问题



我刚刚更新到Flutter 2。我更新了所有的依赖项,包括http。现在我遇到了以下问题:

Future<UserLogin> fetchStaff(String pUserName, String pPassword) async {
final response = await http
.post(Uri.encodeFull('$kBaseUrl/LoginService/CheckLogin'),
headers: {'Content-Type': 'application/json', 'Accept': 'application/json'},
body: '{ "pUser": "$pUserName", "pPassword": "$pPassword"}')
.timeout(Duration(seconds: kTimeOutDuration));

我在以下上收到错误:Uri.encodeFull('$kBaseUrl/LoginService/CheckLogin'

"无法将参数类型"String"分配给参数类型"Uri">

$kBaseUrl='https://subdom.mydomain.com:443/mobile';

我需要更改什么?

Post方法以前用于获取字符串,现在它们已修改为Uri

如此使用,Uri.parse获得uri

.post(Uri.parse(Uri.encodeFull('$kBaseUrl/LoginService/CheckLogin'))

正如错误所说,这是因为post函数需要一个Uri,而您已经向它传递了String(由Uri.encodeFull返回(。您需要使用Uri.parse向它传递Uri

final response = await http
.post(Uri.parse('$kBaseUrl/LoginService/CheckLogin'),

如果您有一个字符串,例如:

String strUri="${yourBaseUrl}/yourPath/yourFile";

使用

http.post(Uri.parse(strUri),
headers: {...},
body: {...},
);

足以让一切恢复正常。

如果uri字符串作为uri或uri引用无效,则可以尝试Uri.tryParse(strUri)来处理null

最新更新