fetch method

Future<Map<String, String>> fetch ()

This method fetches list of languages supported by platform

To which you can translate or these languages can be detected

In case of success, returns { . . . 'ru': 'Russian' 'en': 'English', . . . }

In case of error, returns { 'error': ' ... ' }

Implementation

Future<Map<String, String>> fetch() {
  var completer = Completer<Map<String, String>>();
  HttpClient()
      .getUrl(Uri.https(domain, path, {
        'key': apiKey,
        'ui': langCode,
      }))
      .then(
        (HttpClientRequest request) => request.close(),
        onError: (e) => completer.complete({}),
      )
      .then(
        (HttpClientResponse response) => response
            .transform(utf8.decoder)
            .transform(json.decoder)
            .listen(
              (data) => completer.complete(
                    response.statusCode == 200
                        ? Map<String, String>.from(
                            Map<String, dynamic>.from(data).remove('langs'))
                        : {
                            'error': Map<String, dynamic>.from(data)
                                .remove('message') as String
                          },
                  ),
              onError: (e) => completer.complete({}),
              cancelOnError: true,
            ),
        onError: (e) => completer.complete({}),
      );
  return completer.future;
}