代码:

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

class HomePage extends StatefulWidget {
HomePage({Key key}) : super(key: key);

@override
_HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {

TextEditingController typeController = TextEditingController();
String showText = '欢迎光临';
@override
Widget build(BuildContext context) {
return Container(
child: Scaffold(
appBar: AppBar(title: Text('天上人间')),
body: Container(
child: Column(
children: <Widget>[
TextField(//文本框
controller: typeController,
decoration: InputDecoration(//输入类型
contentPadding: EdgeInsets.all(10.0),
labelText: '美女类型',
helperText: '请输入你喜欢的类型'//提示文案
),
autofocus: false,//必须加上 关闭对焦
),
RaisedButton(
onPressed: (){
_choiceAction();
},
child: Text('选择完毕'),
),
Text(
showText,
overflow: TextOverflow.ellipsis,//省略号
maxLines: 1,
)

],
),
),
),
);
}
void _choiceAction(){
print('开始选择');
if (typeController.text.toString() == '') {
showDialog(
context: context,
builder: (context)=>AlertDialog(title: Text('类型不能为空'))
);
}else{
getHttp(typeController.text.toString()).then(
(val){//网络请求返回的数据 也就是Future
setState(() {
showText = val['data']['name'].toString();
});
}
);
}
}
//future 返回的对象 TypeText 文本框类型的String文本参数
Future getHttp(String TypeText)async{
try {
Response res;
var data = {'name' : TypeText};
res = await Dio().get('https://www.easy-mock.com/mock/5c60131a4bed3a6342711498/baixing/dabaojian',
queryParameters: data
);
return res;
 
} catch (e) {
return print(e);
}
}
}
 
总结:

 

网络请求 引入dio

在pubspec.yaml 下的dependencies发布环境 dio: ^xx  xx是版本号 :后有空格

使用 dio

async{ 异步请求

try{

Response res;

res = await Dio().get(“https:xxxx”);//await 在 async 才可以使用 

}catch(e){

 

}

 

 

} 

 

 

 

通过网络请求获取到数据

Future Methodxxx(yyyy) // Future 返回数据类型  xx方法名  yy 参数名

 

Mehtodxxx().then(val){//val  就是Methodxx 方法中的返回类型Future

 

}

 

//类似OC Alert

AlertDialog(title:Text(‘xxx’))