flutter 将数据作为map发送给API

igetnqfo  于 2023-03-31  发布在  Flutter
关注(0)|答案(1)|浏览(173)

你好,我正在尝试发送数据包含[姓名,电话,密码,密码2,我的手机]作为Map
这是我的登录功能,它的工作刚刚好,我想使singup与相同的逻辑

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();
    }
  }

我试图在Map内循环,但我没有工作,当我点击它没有显示任何结果或问题和斯汀显示我只采取空字符串

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;
  }

这篇文章在登录时工作得很好

laximzn5

laximzn51#

you were using HTTP package 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(您的map/body)

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'); 
    
      }
  }

希望这对你有帮助!

相关问题