Ошибка: Тип аргумента «Строка» не может быть присвоен типу параметра «Uri». — «Uri» происходит от «dart:ядро»

#android #string #flutter #localhost #uri

Вопрос:

у меня проблема с этой ошибкой:

 import 'package:http/http.dart' as http;
import 'dart:convert';

import 'package:inboxed/model/login_model.dart';

class APIService {
  Future<LoginResponseModel> login(LoginRequestModel requestModel) async {
    String url = 'https://localhost:3000/api/users/session';

    final response = await http.post(url, body: requestModel.toJson());
    if (response.statusCode == 200 || response.statusCode == 400) {
      return LoginResponseModel.fromJson(
        json.decode(response.body),
      );
    } else {
      throw Exception('Failed to load Data');
    }
  }
}
 

Консоль отладки:

Запуск libmain.dart на AOSP на эмуляторе IA в режиме отладки…

lib/api/api_service.dart:10:38: Ошибка: Тип аргумента «Строка» не может быть присвоен типу параметра «Uri».

Uri» происходит от «dart:ядро». окончательный ответ = ожидание http.post(url, тело: requestModel.тоЙсон());

СБОЙ: Сборка завершилась неудачно с исключением.

Где: Сценарий ‘C:developmentflutterpackagesflutter_toolsgradleflutter.gradle строка: 991

Что пошло не так: Не удалось выполнить задачу»: приложение:compileflutterbuildebug». Процесс «команда «C:developmentflutterbinflutter.bat» закончено с ненулевым значением выхода 1

Попробуйте: Запустите с параметром —stacktrace, чтобы получить трассировку стека. Запустите с параметром —info или —debug, чтобы получить больше выходных данных журнала. Запустите с —scan, чтобы получить полную информацию.

Получите дополнительную помощь по адресу https://help.gradle.org

ОШИБКА СБОРКИ в 38-х годах Исключение: Ошибка сборки задачи Gradle с кодом выхода 1 (sigterm)

Ответ №1:

Просто проанализируйте URL-адрес строки с помощью Uri…. Смотрите пример ниже

 String url = "your_endpoint_here";
final response = await http.post(Uri.parse(url), body: requestModel.toJson());
 

Ответ №2:

Нужно проанализировать ваш URL-адрес с помощью кода ниже и передать его вместо строки URL;

 Uri.parse(url)
 

Пример кода использования ;

 String url = "https://sandbox-api.iyzipay.com/payment/bin/check";
  Map body = {"locale":"tr","conversationId":"123456ayx5","binNumber":"$binNumber"} ;

  //String 
  String requeststr = "locale=tr,conversationId=123456ayx5,binNumber=$binNumber";

  String pkistring = v1hashing(requeststr);

  HttpClient httpClient = new HttpClient();
  HttpClientRequest request = await httpClient.postUrl(Uri.parse(url));

//headers
  request.headers.set('Accept' ,  'application/json');
  request.headers.set('Content-Type' ,  'application/json');


//body
  request.add(utf8.encode(json.encode(body)));

//response 
  HttpClientResponse response = await request.close();
  print(response.statusCode); 
  String reply = await response.transform(utf8.decoder).join();
  Map responseMap = json.decode(reply);
  httpClient.close();
  print(responseMap);