flutter:安装第三方库dio 5.9.2,一个简单的get方法例子
一,安装
地址:
https://pub.dev/packages/dio
编辑pubspec.yaml
dependencies:
dio: ^5.9.2
二,代码
import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'dart:convert';
import 'dart:io';
class DetailPage extends StatefulWidget {
@override
State<DetailPage> createState() => _DetailPageState();
}
class _DetailPageState extends State<DetailPage> {
String _title = "标题";
String _author = "作者";
String _content = "吟诗一首";
Future<Map<String, dynamic>> getHttp(String url) async {
Map<String,dynamic> res = {};
try {
final response = await Dio().get(url);
print(response);
if (response.statusCode == HttpStatus.ok) {
var data= jsonDecode(response.toString());
print(data);
//setContent(data['data']['content'],data['data']['title'],data['data']['author']);
res['data'] = data['data'];
res['status'] = 'success';
res['message'] = '';
return res;
} else {
res['data'] = {};
res['status'] = 'failed';
res['message'] = 'response.statusCode:'+response.statusCode.toString();
return res;
}
} catch (e) {
print(e.toString());
res['data'] = {};
res['status'] = 'failed';
res['message'] = 'exception:'+e.toString();
return res;
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.surfaceContainer,
title: const Text("detail页面"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
print("按钮被点击了:");
String url = "http://www.nihonnoma.net/detail.php";
var res = await getHttp(url);
print(res);
if (res['status'] == 'success') {
setState(() {
_content = res['data']['content'];
_title = res['data']['title'];
_author = res['data']['author'];
});
} else {
print("报错:"+res['message']);
}
},
child: Text(
'获取远程数据',
style: TextStyle(
color: Colors.blue,
),
),
),
Text(
'$_title',
),
Text(
'$_author',
),
Text(
'$_content',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
);
}
}
三,测试效果:

浙公网安备 33010602011771号