Странные предупреждения компилятора Dart на http lib

Я пытаюсь использовать дартс http библиотека для выполнения простых HTTP GET и POST запросов:

import 'package:http/http.dart' as http;
import 'package:http/src/response.dart';

void main() {
    String json = getSomeJSONString();
    http.post(url, body: json, encoding: Encoding.getByName("UTF-8")).then(onResponse);
}

void onResponse(Response response) {
    // Do something
}

Когда я прохожу это через pub build Я получил:

[Dart2JS on myapp-client|web/myapp_client.dart]:Building myapp-client......

[Dart2JS on myapp-client|web/myapp_client.dart]:
../../../../../sandbox/workbench/dart/dart/dart-sdk/lib/core/uri.dart:1133:17: Info: This is the method declaration.packages/http/src/utils.dart:41:42: Warning: Arguments do not match the expected parameters of 'encodeQueryComponent'.
static String encodeQueryComponent(String component) {
^^^^^^^^^^^^^^^^^^^^

[Dart2JS on myapp-client|web/myapp_client.dart]:pairs.add([Uri.encodeQueryComponent(key, encoding: encoding),

../../../../../sandbox/workbench/dart/dart/dart-sdk/lib/core/uri.dart:1133:17: Info: This is the method declaration.
static String encodeQueryComponent(String component) {
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[Dart2JS on myapp-client|web/myapp_client.dart]:
packages/http/src/utils.dart:42:42: Warning: Arguments do not match the expected parameters of 'encodeQueryComponent'.
 Uri.encodeQueryComponent(value, encoding: encoding)]));
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[Dart2JS on myapp-client|web/myapp_client.dart]:
packages/http/src/utils.dart:41:58: Warning: No named argument 'encoding' found on method.
pairs.add([Uri.encodeQueryComponent(key, encoding: encoding),
 ^^^^^^^^
[Dart2JS on myapp-client|web/myapp_client.dart]:
packages/http/src/utils.dart:42:60: Warning: No named argument 'encoding' found on method.
 Uri.encodeQueryComponent(value, encoding: encoding)]));
 ^^^^^^^^
[Info in Dart2JS]:
Generated myapp-client|web/myapp_client.dart.js (246641 characters) in 0:00:09.640230
Built 14 files!

Итак, несколько вопросов:

  1. Что это за предупреждения и почему я их получаю?
  2. Что мне нужно сделать, чтобы заставить их уйти (исправить их)?
  3. Почему я должен включить это http библиотека как зависимость, если она является частью языка / ядра дартс?

1 ответ

Решение

http пакет зависит от dart:io, который недоступен приложениям веб-клиента, поэтому вы не сможете его использовать (это не источник ваших предупреждений, но нет особого смысла их отлаживать, когда вы все равно не можете использовать пакет).

Вместо этого используйте что-то вроде адажа.

Насколько я понимаю, пакет http не является частью основных библиотек Dart, хотя он работает над командой Dart. Я не совсем уверен, что решение сделать библиотеку частью ядра Dart или нет (dart: префикс). В этом случае я предполагаю, что это потому, что dart:io уже есть поддержка http.

Другие вопросы по тегам