detect method
Detects which language provided text belongs to
In case of success, returns
{ 'lang': 'en' }
In case of error, returns
{ 'error': ' ... ' }
You may also pass a list of language codes, as hint
, which will be prioritized while detecting language
Implementation
Future<Map<String, String>> detect(
String text, {
List<String> hint,
}) {
var completer = Completer<Map<String, String>>();
if (text == null || text.isEmpty)
completer.complete({
'error': 'Text no okay',
});
else
HttpClient()
.getUrl(Uri.https(
domain,
path,
hint != null && hint.isNotEmpty
? {
'key': apiKey,
'text': text,
'hint': hint.join(','),
}
: {
'key': apiKey,
'text': text,
}))
.then(
(HttpClientRequest request) => request.close(),
onError: (e) => completer.complete({
'error': e.toString(),
}),
)
.then(
(HttpClientResponse response) =>
response.transform(utf8.decoder).transform(json.decoder).listen(
(data) => completer.complete(
response.statusCode == 200
? {
'lang': Map<String, dynamic>.from(data)
.remove('lang') as String
}
: {
'error': Map<String, dynamic>.from(data)
.remove('message') as String
},
),
onError: (e) => completer.complete({
'error': e.toString(),
}),
cancelOnError: true,
),
onError: (e) => completer.complete({
'error': e.toString(),
}),
);
return completer.future;
}