面试题答案
一键面试在Flutter中使用http
插件进行网络请求并通过try - catch
处理异常,示例代码如下:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class NetworkRequestPage extends StatefulWidget {
@override
_NetworkRequestPageState createState() => _NetworkRequestPageState();
}
class _NetworkRequestPageState extends State<NetworkRequestPage> {
String _result = '';
Future<void> _fetchData() async {
try {
// 发起网络请求
final response = await http.get(Uri.parse('https://example.com/api/data'));
// 检查响应状态码
if (response.statusCode == 200) {
// 解析响应数据
final jsonData = jsonDecode(response.body);
setState(() {
_result = jsonData.toString();
});
} else {
setState(() {
_result = '服务器错误,请稍后重试';
});
}
} catch (e) {
setState(() {
_result = '网络连接失败,请检查网络设置';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('网络请求示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('请求结果: $_result'),
ElevatedButton(
onPressed: _fetchData,
child: Text('发起请求'),
),
],
),
),
);
}
}
上述代码中:
- 在
_fetchData
方法中使用try - catch
块。 - 在
try
块内发起网络请求,通过http.get
方法获取数据。 - 检查
response.statusCode
判断服务器响应状态,若为200则正常解析数据并更新UI;否则提示服务器错误。 - 在
catch
块中捕获所有异常,提示网络连接失败。 - 通过
setState
方法更新UI以显示相应的提示信息。