Флаттер зови api отдых с длинным телом - PullRequest
0 голосов
/ 06 июня 2019

Когда я вызываю мой API отдыха, у меня появляется ошибка:

I/flutter (25698): {user: {firstName: Jérémy, lastName: Gachon, pseudo: jerem, email: exemple@gmail.com, password: Abcd1234, birthDateDay: 24, birthDateMonth: 12, birthDateYear: 2004, language: fr}}
I/flutter (25698): gg1
I/flutter (25698): type '_InternalLinkedHashMap<String, String>' is not a subtype of type 'String' in type cast

А вот и мой код:

Future<User> handleSignup(String email, String password, String pseudo,
  String firstName, String lastName, String birthDate) async {
var finalBirthDate = birthDate.split("/");
Map userDataFormated = {
  "user": {
    "firstName": firstName,
    "lastName": lastName,
    "pseudo": pseudo,
    "email": email,
    "password": password,
    "birthDateDay": finalBirthDate[0],
    "birthDateMonth": finalBirthDate[1],
    "birthDateYear": finalBirthDate[2],
    "language": 'fr'
  }
};
print(userDataFormated);
try {
  print("gg1");
  var res = await http.post(globals.apiUrl + "auth/createUser/", body: userDataFormated);
  print("gg2");
  print(res);
  if (res.statusCode == 201) {
    final map = convert.jsonDecode(res.body);
    final User user = new User.fromMap(map);
    return user;
  } else {
    print(res);
      }
    } catch (e) {
      print(e);
    }
  }

Компилятор не принимает, когда я помещаю карту в пользователя в мою карту тела. Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

раствор:

var res = await http.post(url, body: convert.json.encode(userDataFormated), headers: {"Content-type": "application/json", "Accept": "application/json"});
0 голосов
/ 06 июня 2019

перейти к решению

Проблема

_InternalLinkedHashMap 'не является подтипом типа' String 'в типе cast

Шаг 1: прочитайте http.post код

https://github.com/dart-lang/http/blob/master/lib/http.dart

Future<Response> post(url,
    {Map<String, String> headers, body, Encoding encoding})

Шаг 2: обратите внимание на комментарии

[body] устанавливает тело запроса. Это может быть [String], [List] или карта]. Если это строка, она кодируется с помощью [encoding] и используется в качестве тела запроса. Тип содержимого запроса будет по умолчанию "text / plain".

Шаг 3:

Карта <строка, Карта <строка, строка>> не равна карте <строка, строка>

Решение

импорт дротиков: конвертировать

import 'dart:convert' as convert;

использовать convert.json.encode

body: convert.json.encode(userDataFormated)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...