代码:
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’))