Загрузка данных


import 'dart:convert';
import 'dart:io';

class PublicDns {
  final List<String> prefixes;

  PublicDns({required this.prefixes});

  factory PublicDns.fromJson(Map<String, dynamic> json) {
    return PublicDns(
      prefixes: (json['prefixes'] as List)
          .map((item) =>
              item['ipv4Prefix'] ?? item['ipv6Prefix'])
          .whereType<String>()
          .toList(),
    );
  }
}

Future<PublicDns> feathGet({required String url}) async {
  var client = HttpClient();

  try {
    var request = await client.getUrl(Uri.parse(url));
    var response = await request.close();
    var body = await response.transform(utf8.decoder).join();

    var json = jsonDecode(body) as Map<String, dynamic>;

    return PublicDns.fromJson(json);
  } finally {
    client.close();
  }
}

Future<void> main() async {
  var dns = await feathGet(
    url: "https://www.gstatic.com/ipranges/publicdns.json",
  );

  print(dns.prefixes);

  for (var prefix in dns.prefixes) {
    print(prefix);
  }
}