http_dns 0.0.5 http_dns: ^0.0.5 copied to clipboard
aliyun HTTPDNS plugin.
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))
),
]
),
),
);
}
}