你好,我正在尝试将包含[姓名、电话、密码、密码2、myphone]的数据发送为映射
这是我的登录功能,它工作得很好,我想用相同的逻辑进行标记
login(Map body) async {
var response = await api.post('url', body);
if (response.statusCode == 201) {
var rawDara = json.decode(response.body);
setToken(rawDara['token'].toString().trim());
_status = Status.authenticated;
notifyListeners();
}
}
我试着在地图内循环,但没有成功,当我点击它时,没有显示任何结果或问题Sting秀我只接受可以为null的字符串
signUp(Map<String, String> userData) {
String email = userData['name'];
String password = userData['password'];
String firstName = userData['password2'];
String lastName = userData['phone'];
期望将数据发送到api,并且我已经在api文件中编写了错误处理程序
Future<http.Response> post(String url, Map body) async {
var response = await http.post(Uri.parse(baseUrl + url), body: body);
if (kDebugMode) {
print('Post On: $baseUrl$url n with body: $body');
print(
'Status: ${response.statusCode} n with response: ${response.body}');
}
return response;
}
登录中的后期工作很好
您使用的是HTTP
软件包flutter。
在HTTP
包中,当您获得响应时,它将以String
的形式出现,因此您可以将其转换为获得实际的数据(响应),如
import 'dart:convert';
final result = jsonDecode(response.body);
print('result -> $result '); // your api result
同样,当您进行POST
请求时,您必须仅在HTTP POST
请求中以String
的形式传递(发送)数据
通过这种方式,您可以将map
转换为String
final sendBody = jsonEncode(body), // convert your body(map) into String
现在,您可以在POST
请求中发送sendBody(您的地图/身体)
Future<http.Response> post(String url, Map<String,dynamic> body) async {
try{
Response response = await http.post(
Uri.parse(baseUrl + url),
body: sendBody , // or use jsonEncode(body)
);
return response;
} catch(e){
print('error : $e');
}
}
希望这对你有帮助!