I think you should decode the data with utf8.decode before decoding into json.
utf8.decode
var responseBody = await response.stream.bytesToString(); final decodedBody = utf8.decode(responseBody); final data = json.decode(responseBody);