MST

星途 面试题库

面试题:Flutter中Dio插件文件上传时如何处理进度监听

在Flutter项目中使用Dio插件进行文件上传功能开发,要求你实现一个可以实时监听文件上传进度的功能,描述实现思路并给出关键代码片段。
36.6万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 引入Dio插件,确保其在pubspec.yaml文件中配置正确并安装。
  2. 使用DioFormData来构建要上传的文件数据。
  3. Diooptions中设置onSendProgress回调函数来监听上传进度。

关键代码片段

import 'package:dio/dio.dart';

Future<void> uploadFile(String filePath) async {
  Dio dio = Dio();
  try {
    FormData formData = FormData.fromMap({
      "file": await MultipartFile.fromFile(filePath),
    });

    // 监听上传进度
    dio.options.onSendProgress = (int sent, int total) {
      print('上传进度: ${(sent / total * 100).toStringAsFixed(2)}%');
    };

    Response response = await dio.post('上传接口地址', data: formData);
    print('上传成功: ${response.data}');
  } catch (e) {
    print('上传失败: $e');
  }
}