MST

星途 面试题库

面试题:Flutter中http插件数据获取的异常处理

在Flutter中使用http插件进行网络请求获取数据时,可能会遇到网络连接失败、服务器响应错误等异常情况。请描述如何使用try - catch语句来捕获并处理这些异常,以提供友好的用户提示,比如显示'网络连接失败,请检查网络设置'或'服务器错误,请稍后重试'这样的信息。
13.6万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试

在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('发起请求'),
            ),
          ],
        ),
      ),
    );
  }
}

上述代码中:

  1. _fetchData方法中使用try - catch块。
  2. try块内发起网络请求,通过http.get方法获取数据。
  3. 检查response.statusCode判断服务器响应状态,若为200则正常解析数据并更新UI;否则提示服务器错误。
  4. catch块中捕获所有异常,提示网络连接失败。
  5. 通过setState方法更新UI以显示相应的提示信息。