跳转到内容

网络与下载

IriX 的所有对外 HTTP 请求都由 Rust 处理。Dart 侧只负责发起调用与接收结果。

场景 Dart 入口 Rust 底层
小 / 中响应(API 调用) HttpFfiServicelib/services/http_ffi.dart http_client crate
大文件下载 Downloader.downloadFilelib/services/downloader.dart downloader crate

http_client crate 支持 GET / POST / PUT / PATCH / DELETE / HEAD 方法,响应以 base64 体返回。适用于 API 调用等小 / 中响应场景。

downloader crate 提供流式写盘与分片下载能力,支持断点续传,适合服务器文件、模组包等大文件场景。

  • 新增 API 服务禁止使用 package:http(仅测试用例保留)
  • 本地回环 HTTP 服务端例外:OAuth 回调、MCP 服务端仍使用 dart:io HttpServer
  • 底层均为 ureq + rustls,无 OpenSSL 依赖,部署与交叉编译更简单
Flutter UI
│ Downloader.downloadFile
FFI 调用 xmc_downloader
downloader crate
├──► HTTP 服务器(ureq + rustls)
└──► 本地文件(流式写盘)
进度回调 ──► UI 进度条