http_dns 0.0.5 copy "http_dns: ^0.0.5" to clipboard
http_dns: ^0.0.5 copied to clipboard

aliyun HTTPDNS plugin.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:http_dns/http_dns.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _text = '';

  @override
  void initState() {
    super.initState();
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> setup() async {
    try {
      //初始化  (注:HTTPDNS 有个坑爹的机制,它的 getIpsByHostAsync方法是先返回接口再异步请求新值
      //所以第一次返回是null,强烈建议填写preResolveHosts(预缓存),避免这个bug)
      var result = await HttpDns.setup(
        accountID:'xxx',  //必填项
        secretKey:null, //选填项
        preResolveHosts:['xxx.com'], //选填项
      );

      //UI显示相关代码
      if(result == 'ok'){
        print('HttpDns.setup success! result:${result}');
        setState(() {
          _text = 'HttpDns.setup success! result:${result}';
        });
      }else{
        print('HttpDns.setup fail! result:${result}');
        setState(() {
          _text = 'HttpDns.setup fail! result:${result}';
        });
      }
    } on PlatformException catch (e) {
      print(e.message);
    }
    //String platformVersion;
    // Platform messages may fail, so we use a try/catch PlatformException.
  }

  Future<void> getIp() async {
    var a = await HttpDns.getIpByUrl(url:'https://ottoapi.niuniutaojin.com');
    print('getIpByUrl:${a}');
    setState(() {
      _text = 'getIpByUrl:${a}';
    });
  }

  Future<void> getIps() async {
    var a = await HttpDns.getIpsByUrl(url:'http://ottoapi.niuniutaojin.com');
    print('getIpsByUrl:${a}');
    setState(() {
      _text = 'getIpsByUrl:${a}';
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('HTTPDNS example'),
        ),
        body:Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            children:[
              Expanded(child:Container(
                alignment: Alignment.topLeft,
                padding: EdgeInsets.all(16.0),
                child: Text(_text,style: TextStyle(fontSize: 16.0)),
              )),
              TextButton(
                  onPressed: () {
                    setup();
                  },
                  child: Text('setup(初始化)',style: TextStyle(fontSize: 18.0))
              ),
              TextButton(
                  onPressed: () {
                    getIp();
                  },
                  child: Text('getIp(获取ip)',style: TextStyle(fontSize: 18.0))
              ),
              TextButton(
                  onPressed: () {
                    getIps();
                  },
                  child: Text('getIps(获取ips)',style: TextStyle(fontSize: 18.0))
              ),
            ]
        ),
      ),
    );
  }
}
1
likes
30
pub points
0%
popularity

Publisher

unverified uploader

aliyun HTTPDNS plugin.

Homepage

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on http_dns