Files
xianyan/docs/09_三方库扩展功能开发文档.md
Developer a60957cc0e feat: 发布v5.3.0正式版本,完善跨平台适配与功能优化
本次更新包含多项核心改进:
1. 新增统一跨平台导航扩展,替换原有GoRouter调用,适配鸿蒙平台路由逻辑
2. 重构状态初始化逻辑,使用Future.microtask避免BuildContext异常
3. 完善Linux桌面端支持,添加桌面文件、AppData配置与WSL构建脚本
4. 修复鸿蒙平台动画渲染异常问题,移除平台特判逻辑
5. 优化NFC配对扫描参数,精简不必要的配置项
6. 更新依赖版本与项目版本号
7. 修复Drift数据库缓存问题,移除冗余的表检测逻辑
8. 添加路由观察者日志,优化鸿蒙端路由调试体验
9. 完善签到与文章发布后的用户数据刷新逻辑
10. 删除冗余的子模块与日志文件,清理项目结构
2026-05-18 08:58:36 +08:00

28 KiB
Raw Blame History

闲言APP — 三方库扩展功能开发文档

创建时间: 2026-04-25 更新时间: 2026-05-18 版本: v0.26.0 关联文档: 07_三方库清单 | 10_三方库接入开发清单 说明: 三方库接口分析、扩展功能、开发流程 + 鸿蒙适配状态 v0.26更新: 版本号同步pubspec.yaml + 新增文件传输层库接口 + 鸿蒙30包适配标注 + 状态更新


一、库总览与平台兼容性

1.1 核心库定位

版本 定位 渲染引擎 跨平台等级 鸿蒙
flutter_advanced_canvas_editor 2.1.0 图层管理系统 Flutter Canvas 🟢 全平台
flutter_3d_controller 2.3.0 3D模型交互预览 WebView + model-viewer 🟠 移动+Web
image_size_getter 2.4.1 图片尺寸/格式检测 纯Dart (读文件头) 🟢 全平台
extended_image 10.0.1 增强图片组件 Flutter Canvas 🟢 全平台
photo_view 0.15.0 图片缩放查看器 Flutter Canvas 🟢 全平台
flutter_image_compress 2.4.0 原生图片压缩 平台原生SDK 🟢 全平台
flutter_slidable 4.0.3 列表项滑动操作 Flutter Canvas 🟢 全平台
flutter_sticky_header 0.8.0 粘性分组头 Flutter Canvas 🟢 全平台
pull_down_button 0.10.1 iOS下拉菜单 Flutter Canvas 🟢 全平台

1.2 平台兼容性矩阵

平台 canvas_editor 3d_controller image_size_getter extended_image photo_view image_compress slidable sticky_header
Android
iOS
macOS
Windows
Linux
Web ⚠️
鸿蒙

1.3 依赖关系

核心依赖 包体积影响
flutter_advanced_canvas_editor 无 (纯Dart) ~0KB
flutter_3d_controller flutter_inappwebview, vector_math, http ~5-10MB
image_size_getter 无 (纯Dart) ~0KB
extended_image 无 (纯Flutter) ~0KB
photo_view 无 (纯Flutter) ~0KB
flutter_image_compress 平台原生SDK ~0.5MB
flutter_slidable 无 (纯Dart) ~0KB
flutter_sticky_header value_layout_builder ~0KB
pull_down_button 无 (纯Dart) ~0KB

二、flutter_advanced_canvas_editor — 接口详解 ( 已归档)

Phase 1 已完成核心API已适配到 LayerManagerService

2.1 关键接口速查

类别 核心API 已适配到
图层CRUD createLayer / deleteLayer / reorderLayer / duplicateLayer / mergeLayerDown LayerManagerService
图层属性 setLayerVisibility / setLayerOpacity / setLayerLocked / renameLayer LayerManagerService
撤销重做 undo / redo / clearAll (50步快照) LayerSnapshotService
组件操作 addComponent / updatePosition / rotateComponent / deleteComponent LayerManagerService
导出 exportCanvas / scaleAllPositions ExportService

2.2 已实现功能清单

# 功能 状态 产出文件
A1 🗂️ 专业图层面板 layer_panel.dart
A2 👁️ 图层可见性切换 layer_manager_service.dart
A3 🔒 图层锁定 layer_manager_service.dart
A4 🌫️ 图层不透明度 layer_manager_service.dart
A5 ↩️ 增强撤销/重做 layer_snapshot_service (集成在LayerManagerService)
A6 🔀 图层排序拖拽 layer_panel.dart
A7 📋 图层复制 layer_manager_service.dart
A8 🔗 图层合并 layer_manager_service.dart
A9 🏷️ 图层命名 layer_panel.dart
A10 🧹 图层清空 layer_manager_service.dart

三、flutter_scene — 接口详解 ( v0.23.0 已移除)

Phase 2 核心已完成,但 v0.23.0 统一3D渲染路径后已移除 flutter_scene 依赖 所有3D功能统一由 flutter_3d_controller (WebView) 承载

3.1 移除原因

  • flutter_scene 需要 .model 预编译格式,流程繁琐
  • WebView 方案 (flutter_3d_controller) 跨平台更稳定
  • useScene 双分支增加维护复杂度
  • v0.23.0 统一使用 flutter_3d_controller

四、flutter_3d_controller — 接口详解 ( 已归档 · v0.23.0 统一3D路径)

Phase 2 核心已完成v0.23.0 统一3D渲染路径后成为唯一3D引擎 Model3DPreviewPage + Sticker3DPanel + 画布3D贴纸 全部使用 Flutter3DViewer

4.1 关键接口速查

类别 核心API 已适配到
GLB查看 Flutter3DViewer(src:, controller:) Model3DPreviewPage + Sticker3DPanel + 画布3D贴纸
控制器 Flutter3DController.playAnimation / pauseAnimation / resetCameraOrbit Model3DPreviewPage
动画列表 getAvailableAnimations Model3DPreviewPage
自动旋转 startRotation / pauseRotation Model3DPreviewPage
加载进度 onProgress(double) Model3DPreviewPage

4.2 已实现功能

# 功能 状态 产出文件
C1 🎬 3D模型预览 model_3d_preview_page.dart
C2 🎭 动画播放控制 model_3d_preview_page.dart
C3 🔄 自动旋转 model_3d_preview_page.dart
C4 📷 相机重置 model_3d_preview_page.dart
C5 加载进度 model_3d_preview_page.dart
C6 🧊 3D贴纸面板预览 sticker_3d_panel.dart (v0.23.0真实3D渲染)
C7 🎨 画布3D贴纸 pro_editor_bridge.dart (v0.23.0 Flutter3DViewer)
C8 📤 3D贴纸导出 widget_layer_renderer.dart (v0.23.0 静态快照)
C9 📱 低端设备检测 platform_3d_service.dart (v0.23.0 UI降级提示)

五、image_size_getter ^2.4.1 — 接口详解

5.1 核心API

class ImageSizeGetter {
  static SizeResult getSizeResult(ImageInput input);
  static Future<SizeResult> getSizeResultAsync(ImageInput input);
  static bool isPng/isJpg/isGif/isWebp/isBmp(ImageInput input);
  static void registerDecoder(BaseDecoder decoder);
}

class SizeResult {
  final Size size;           // width, height
  final BaseDecoder decoder;
}

class Size {
  final int width;
  final int height;
  final bool needRotate;     // EXIF旋转标记 (JPEG)
}

5.2 可扩展功能清单

# 功能 对应API 与现有功能结合点 优先级 状态
IS1 📐 导入图片智能适配 getSizeResult ImageImportService → 画布缩放比 P0
IS2 🔄 EXIF旋转自动校正 Size.needRotate ImageImportService → 自动旋转 P0
IS3 🏷️ 图片格式检测 isPng/isJpg/isGif/isWebp 导入时显示格式标签 P1
IS4 🖼️ GIF帧数检测 GifDecoder GIF导出预览帧数 P2 API不可用
IS5 图片信息面板 Size + format 编辑器信息展示 P1

六、extended_image ^10.0.1 — 接口详解

6.1 核心API

ExtendedImage({
  required ImageProvider image,
  ExtendedImageMode mode,             // none / gesture / editor
  GestureConfig? initGestureConfigHandler,
  EditorConfig? initEditorConfigHandler,
})

ExtendedImageEditorState {
  void rotate({double degree = 90, bool animation = false});
  void flip({bool animation = false});
  void reset(); void undo(); void redo();
  Rect getCropRect();
  Future<Uint8List> cropImageData();
}

ExtendedResizeImage({
  required ImageProvider imageProvider,
  double compressionRatio = 1.0,
  int? maxBytes, int? width, int? height,
})

ExtendedImageSlidePage({required Widget child})
ExtendedImageGesturePageView({required List<Widget> children})

6.2 可扩展功能清单

# 功能 对应API 与现有功能结合点 优先级 状态
EI1 ✂️ 裁剪编辑器 ExtendedImageEditor + cropImageData 编辑器新增裁剪工具 P1
EI2 🔄 图片旋转/翻转 rotate()/flip() 裁剪编辑器内置 P1
EI3 🖼️ 大图内存优化 ExtendedResizeImage 大图导入防OOM P0
EI4 👆 手势缩放查看 ExtendedImage + gesture模式 图片预览 P2 photo_view替代
EI5 📱 图片滑动退出 ExtendedImageSlidePage 大图预览iOS风格 P2
EI6 📖 手势PageView ExtendedImageGesturePageView 图片画廊 P3
EI7 🎨 自定义裁剪蒙层 EditorCropLayerPainter 裁剪UI定制 P3
EI8 ↩️ 编辑历史undo/redo editor.undo()/redo() 裁剪编辑器内置 P1

6.3 与 ProImageEditor 的关系

项目已使用 pro_image_editor 作为主编辑器,extended_image 的编辑功能与之有重叠。 策略: 重点使用其 内存优化 + 手势查看 + 滑动退出 功能;裁剪编辑器作为快速裁剪模式的补充。


七、photo_view ^0.15.0 — 接口详解

7.1 核心API

PhotoView({
  required ImageProvider imageProvider,
  double? minScale, double? maxScale, double? initialScale,
  bool enableRotation = false,
  ScaleStateCycle? scaleStateCycle,
  PhotoViewController? controller,
  PhotoViewHeroAttributes? heroAttributes,
})

PhotoView.customChild({required Widget child, Size? childSize})
PhotoViewGallery({required List<PhotoViewGalleryPageOptions> pageOptions})
PhotoViewController { setPosition, setScale, setRotation, reset }

7.2 可扩展功能清单

# 功能 对应API 与现有功能结合点 优先级 状态
PV1 🔍 全屏大图预览 PhotoView(imageProvider:) 编辑器图层图片点击 → 全屏查看 P0
PV2 🖼️ 多图画廊浏览 PhotoViewGallery 作品集/草稿列表图片浏览 P1
PV3 🧩 自定义子组件缩放 PhotoView.customChild SVG/3D模型/Canvas内容缩放查看 P2
PV4 🎬 Hero动画过渡 PhotoViewHeroAttributes 列表→大图过渡动画 P1
PV5 👆 双击缩放循环 scaleStateCycle 自定义双击缩放逻辑 P2
PV6 🔄 旋转手势 enableRotation 图片旋转查看 P2
PV7 🎛️ 外部缩放控制 PhotoViewController 程序化控制缩放/位置/旋转 P3

7.3 与 extended_image 的分工

场景 使用库 原因
图片编辑 (裁剪/旋转/翻转) extended_image 内置编辑器
图片查看 (缩放/平移/旋转) photo_view 专注查看体验
多图画廊 photo_view PhotoViewGallery 专用组件
内存优化 extended_image ExtendedResizeImage
滑动退出 extended_image ExtendedImageSlidePage

八、flutter_image_compress ^2.4.0 — 接口详解

8.1 核心API

class FlutterImageCompress {
  static Future<Uint8List> compressWithList(Uint8List image, {
    int minWidth = 1920, int minHeight = 1080, int quality = 95,
    CompressFormat format = CompressFormat.jpeg, bool autoCorrectionAngle = true,
  });
  static Future<Uint8List?> compressWithFile(String path, {...});
  static Future<XFile?> compressAndGetFile(String path, String targetPath, {...});
  static Future<Uint8List?> compressAssetImage(String assetName, {...});
}

enum CompressFormat { jpeg, png, webp, heic }

8.2 可扩展功能清单

# 功能 对应API 与现有功能结合点 优先级 状态
IC1 🗜️ 导出图片压缩 compressWithList JPEG quality:90 ExportService → 体积减少70%+ P0
IC2 📥 导入大图预处理 compressWithList minWidth:4096 ImageImportService → 防OOM P0
IC3 🔄 EXIF旋转自动校正 autoCorrectionAngle: true ImageImportService → 方向正确 P0
IC4 🌐 WebP格式导出 CompressFormat.webp 导出对话框 → 格式选择 P1
IC5 🍎 HEIC格式导出 CompressFormat.heic iOS专用格式 P2
IC6 📸 草稿缩略图生成 compressWithList quality:50 DraftService → 列表加速 P1
IC7 🎚️ 导出质量选择 quality 参数 导出对话框 → 质量滑块 P1
IC8 🎞️ GIF帧压缩 compressWithList 逐帧 GifExportService → GIF体积优化 P2

九、flutter_slidable ^4.0.3 — 接口详解 ( 已归档)

滑动操作组件iOS风格列表项左滑/右滑操作,已封装为 AppSlidable

9.1 核心API

Slidable({
  required Widget child,
  ActionPane? startActionPane,  // 左滑/上滑操作面板
  ActionPane? endActionPane,    // 右滑/下滑操作面板
  bool closeOnScroll = true,
})

ActionPane({required Widget motion, List<Widget> children})
SlidableAction({VoidCallback? onPressed, Color backgroundColor, Widget? icon, String? label})

ScrollMotion()     // 滚动效果推荐iOS风格
BehindMotion()     // 背后显示
StretchMotion()    // 拉伸效果最接近iOS原生
DrawerMotion()     // 抽屉效果

9.2 已实现功能清单

# 功能 对应API 与现有功能结合点 优先级 状态
SL1 📝 笔记滑动操作 endActionPane 笔记列表左滑删除/编辑 P0
SL2 ❤️ 收藏滑动操作 startActionPane 收藏列表右滑取消收藏 P0
SL3 📜 历史滑动删除 DismissiblePane 阅读历史滑动删除 P0
SL4 🔍 搜索历史滑动 SlidableAction 搜索页历史记录管理 P1
SL5 🏷️ 标签滑动操作 endActionPane 标签重命名/删除 P1
SL6 🛠️ 工具滑动操作 startActionPane 工具置顶/取消收藏 P1
SL7 💬 句子卡片滑动 SlidableAction 收藏/分享/纠错快捷操作 P2
SL8 🎨 自定义滑动动画 StretchMotion iOS风格拉伸效果 P2

十、flutter_sticky_header ^0.8.0 — 接口详解 ( 已归档)

粘性分组头组件,已封装为 AppStickyHeaderSliver

10.1 核心API

SliverStickyHeader({
  required Widget header,
  required Widget sliver,
  bool sticky = true,
})

SliverStickyHeader.builder({
  required SliverStickyHeaderBuilderCallback builder,
  required Widget sliver,
})

class SliverStickyHeaderState {
  double get scrollPercentage;  // 0.0~1.0
  bool get isPinned;
}

10.2 已实现功能清单

# 功能 对应API 与现有功能结合点 优先级 状态
SH1 📂 工具中心分类吸顶 SliverStickyHeader 工具面板按分类吸顶 P0
SH2 🔥 热搜平台分组吸顶 SliverStickyHeader 热搜榜按平台分组 P0
SH3 📝 笔记日期分组吸顶 builder + isPinned 笔记列表按日期分组 P1
SH4 📜 历史日期分组吸顶 SliverStickyHeader 阅读历史按日期分组 P1
SH5 🎨 传统色色系吸顶 SliverStickyHeader 传统色按色系分组 P1
SH6 📝 汉语拼音分组吸顶 SliverStickyHeader 汉字查询A-Z分组 P2
SH7 🍶 酒方分类吸顶 SliverStickyHeader 酒方按分类分组 P2
SH8 🎭 吸顶动画效果 builder + scrollPercentage 吸顶时header渐变/缩放 P2

十一、文件传输层库 — 接口详解 (🆕 v0.26.0 新增)

文件传输模块涉及7个传输通道核心三方库接口分析

11.1 shelf ^1.4.0 — HTTP 服务器

import 'package:shelf/shelf.dart';
import 'package:shelf_router/shelf_router.dart';

Router app = Router()
  ..get('/api/files', handleFileList)
  ..post('/api/upload', handleUpload)
  ..get('/api/download/<id>', handleDownload);

Handler handler = const Pipeline()
    .addMiddleware(logRequests())
    .addHandler(app.call);

await IOServer.bind('0.0.0.0', 8080).then((server) => server.handler = handler);

用途: LocalSend 模式 HTTP 文件服务器,局域网设备发现 + 文件收发

11.2 flutter_webrtc ^1.4.0-ohos.1 — WebRTC 传输

RTCPeerConnection connection = await createPeerConnection({
  'iceServers': [{'urls': 'stun:stun.l.google.com:19302'}],
});

connection.onIceCandidate = (candidate) => signaling.sendCandidate(candidate);
connection.onDataChannel = (channel) => handleDataChannel(channel);

RTCDataChannel dc = await connection.createDataChannel('fileTransfer', RTCDataChannelConfig());
dc.onMessage = (RTCDataChannelMessage msg) => handleChunk(msg);

用途: WebRTC P2P 传输,支持 NAT 穿透 + 数据通道文件分块传输

11.3 flutter_blue_plus ^2.1.0-ohos.1 — 蓝牙 BLE

FlutterBluePlus.startScan(timeout: Duration(seconds: 10));
List<BluetoothDevice> devices = FlutterBluePlus.connectedDevices;

BluetoothDevice device = devices.first;
await device.connect();
List<BluetoothService> services = await device.discoverServices();

BluetoothCharacteristic characteristic = services.first.characteristics.first;
await characteristic.write(data);

用途: 蓝牙 BLE 配对 + 小文件传输,适合近距离快速分享

11.4 flutter_nfc_kit ^3.6.0-rc.6-ohos — NFC

NFCTag tag = await FlutterNfcKit.poll(timeout: Duration(seconds: 10));
await FlutterNfcKit.transceive(data);
await FlutterNfcKit.finish();

用途: NFC 碰一碰配对,交换设备信息后切换到 WiFi/蓝牙传输

11.5 mobile_scanner ^7.1.4-ohos.1 — 二维码扫描

MobileScannerController controller = MobileScannerController();
MobileScanner(
  controller: controller,
  onDetect: (capture) {
    final List<Barcode> barcodes = capture.barcodes;
    for (Barcode barcode in barcodes) {
      handleQRCode(barcode.rawValue!);
    }
  },
);

用途: QR 码配对扫描,扫描对方设备二维码获取连接信息

11.6 web_socket_channel ^3.0.3 — WebSocket 中继

WebSocketChannel channel = WebSocketChannel.connect(Uri.parse('wss://relay.example.com'));
channel.stream.listen((message) => handleMessage(message));
channel.sink.add(jsonEncode({'type': 'file_chunk', 'data': chunk}));

用途: WebSocket 中继传输NAT 穿透失败时的备选通道 + 断点续传

11.7 wifi_iot ^0.3.19-ohos.1 — WiFi Hotspot

await WiFiIoT.setEnabled(true);
await WiFiIoT.setWiFiAPEnabled(true);
String? ssid = await WiFiIoT.getWiFiAPSSID();

用途: WiFi Direct / 热点模式,创建局域网直连传输通道


十二、综合功能扩展矩阵

12.1 按优先级排序

优先级 功能 涉及库 收益 状态
P0 导出图片压缩 (JPEG/WebP) flutter_image_compress 导出体积减少70%+
P0 导入大图预处理 flutter_image_compress + image_size_getter 防OOM崩溃
P0 EXIF旋转自动校正 image_size_getter + flutter_image_compress 修复图片方向错误
P0 全屏大图预览 photo_view 查看体验大幅提升
P0 列表滑动操作 flutter_slidable iOS风格列表交互
P0 分组吸顶 flutter_sticky_header 列表分组浏览
P1 裁剪编辑器 extended_image 专业裁剪功能
P1 大图内存优化 extended_image 内存占用减少50%+
P1 图片信息面板 image_size_getter 编辑器信息展示
P1 多图画廊浏览 photo_view 作品集浏览
P1 iOS下拉菜单 pull_down_button 工具操作菜单
P1 Markdown渲染 flutter_markdown_plus 内容展示
P1 草稿缩略图 flutter_image_compress 列表加载加速
P2 图片滑动退出 extended_image iOS风格交互
P2 GIF帧压缩 flutter_image_compress GIF体积优化
P2 自定义子组件缩放 photo_view SVG/3D缩放查看
P2 WebP/HEIC导出 flutter_image_compress 格式多样化
P2 导出质量选择 flutter_image_compress 用户可控质量

十三、已有库深度利用

13.1 现有库未充分利用能力

已有库 当前用途 🔓 可扩展功能
cached_network_image 图片缓存显示 热搜配图 + 头像缓存
connectivity_plus 网络检测 工具状态实时监测(离线灰显)
image_picker + file_picker 选图 OCR识别 + 图片压缩
share_plus 分享 所有工具结果一键分享
shimmer 骨架屏 工具列表加载态 + 搜索结果加载态
flutter_animate 动画 工具卡片入场 + 签到庆祝
confetti 庆祝效果 签到成功 + 成就解锁
lottie Lottie动画 工具加载动画 + 空状态动画
adaptive_palette 图片主色提取 句子卡片自动取色背景
flutter_svg SVG渲染 工具分类图标 + 空状态插画
google_fonts 字体 笔记编辑器字体选择 + 卡片字体
gal 保存到相册 卡片导出保存 + 传统色保存
archive + crypto 压缩/加密 数据导出加密 + 笔记备份
drift 本地数据库 工具使用统计持久化 + 搜索历史
flutter_secure_storage 安全存储 隐私笔记加密存储
audioplayers 音频播放 语音消息播放 + 提示音效
record 录音 语音消息录制
flutter_webrtc WebRTC P2P文件传输 + 屏幕共享
flutter_blue_plus 蓝牙 BLE配对 + 小文件传输
mobile_scanner 扫描 QR码配对扫描

13.2 API + 已有库组合扩展

组合 功能 需新增库
/api/hanzi/search + drift + shimmer + flutter_sticky_header 17种汉语工具 + 本地缓存 + 加载态 + 分组吸顶
/api/hot/read + cached_network_image + flutter_sticky_header 热搜榜 + 配图 + 平台分组吸顶
/api/hanzi/china_colors + gal + adaptive_palette + flutter_sticky_header 传统色浏览 + 保存 + 取色 + 色系吸顶
/api/webapi/ocr + image_picker + flutter_slidable OCR识别 + 历史记录滑动删除
/api/webapi/ImgCompress + image_picker + gal 图片压缩 + 保存
/api/hanzi/search + share_plus + flutter_animate + flutter_slidable 趣味工具 + 分享 + 动画 + 滑动操作
/api/hitokoto/* + confetti + flutter_animate 一言句子 + 庆祝效果 + 动画
/api/user/note + flutter_slidable + flutter_sticky_header 笔记CRUD + 滑动操作 + 日期分组吸顶
/api/user/favorite + flutter_slidable 收藏管理 + 滑动取消收藏
shelf + network_info_plus + mobile_scanner LocalSend局域网传输
flutter_webrtc + shelf_web_socket + web_socket_channel WebRTC+WebSocket中继传输
flutter_blue_plus + flutter_nfc_kit + wifi_iot 蓝牙+NFC+WiFi近场传输

十四、版本规划

版本 Phase 功能 状态
v0.20.0 Phase 1 图层管理面板 + 撤销/重做增强 已完成
v0.21.0 Phase 2 3D模型贴纸 + 3D预览器 + 平台调度 核心完成
v0.22.0 Phase 5 图片压缩 + 大图预览 + 裁剪编辑器 + 图片信息 核心完成
v0.23.0 Phase 2修复 统一3D渲染 + 图层模型统一 + bridge拆分 + 3D模型扩展 已完成
v0.24.0 Phase 6 滑动操作 + 粘性头部 + Markdown + iOS菜单 已完成
v0.25.0 Phase 7 Feed API + 离线模式 + 缓存管理 已完成
v0.26.0 Phase 8 文件传输层库接入 + 鸿蒙30包适配 已完成
v0.27.0 Phase 9 PBR材质 + 环境光照 + 场景导出 待开发
v0.28.0 Phase 10 3D文字 + 网络3D模型 待开发

十五、风险与对策

风险 影响 对策
flutter_3d_controller 不支持鸿蒙 鸿蒙用户无3D渲染 鸿蒙端降级为静态图片
flutter_3d_controller 不支持Win/Linux 桌面用户无3D预览 桌面端降级为静态图片
extended_image与ProImageEditor重叠 裁剪功能冲突 仅作快速裁剪补充主编辑仍用ProImageEditor
flutter_image_compress Web有限制 Web端压缩能力弱 Web端降级为Dart纯编码压缩
大图内存溢出 导入超大图OOM compressWithList预处理 + ExtendedResizeImage
WebRTC NAT穿透失败 P2P传输不可用 降级为WebSocket中继传输
蓝牙BLE传输速度慢 大文件传输体验差 仅用于小文件/配对大文件走WiFi

十六、归档列表

已完成集成的三方库及其产出,记录版本和状态

16.1 已归档库

归档版本 核心产出 完成度 归档日期
flutter_advanced_canvas_editor v0.20.0 LayerManagerService + LayerSnapshotService + LayerPanel 92% 2026-04-24
flutter_scene v0.23.0 已移除统一flutter_3d_controller 2026-04-27
flutter_3d_controller v0.21.0/v0.23.0 Model3DPreviewPage + Sticker3DPanel + 画布3D贴纸 + 3D导出 85% 2026-04-27
image_size_getter v0.22.0 ImageInfoService + ImageInfoPanel + EditorStatusBar 100% 2026-04-25
extended_image v0.22.0 ImageCropPage + ExtendedResizeImage 100% 2026-04-25
photo_view v0.22.0 ImagePreviewPage + ImageGalleryPage 100% 2026-04-25
flutter_image_compress v0.22.0 ImageCompressService + ExportService压缩集成 100% 2026-04-25
flutter_slidable v1.9.0 AppSlidable + SlideActionConfig + DeleteConfirm 100% 2026-04-29
flutter_sticky_header v1.9.0 AppStickyHeaderSliver + 分类吸顶 100% 2026-04-29
pull_down_button v1.9.0 AppPopupMenu 100% 2026-04-29
flutter_markdown_plus v1.9.0 AppMarkdownBody + AppMarkdown 100% 2026-04-29
sliver_tools v1.9.0 SliverPinnedHeader + AppToast 100% 2026-04-29

16.2 文件传输层已集成

集成版本 核心产出 完成度 集成日期
shelf + shelf_router v0.26.0 LocalSendService (HTTP文件服务器) 100% 2026-05-12
shelf_web_socket v0.26.0 WsRelayService (WebSocket中继) 100% 2026-05-12
flutter_webrtc v0.26.0 WebRTCService (P2P传输) 100% 2026-05-12
flutter_blue_plus v0.26.0 BluetoothPairingService (BLE配对) 100% 2026-05-14
flutter_nfc_kit v0.26.0 NfcPairingService (NFC配对) 100% 2026-05-14
mobile_scanner v0.26.0 QRPairingService (QR配对) 100% 2026-05-14
wifi_iot v0.26.0 HotspotService (WiFi热点) 100% 2026-05-14
web_socket_channel v0.26.0 WsRelayChunkAssembler + ResumeHandler 100% 2026-05-12

16.3 待开发

Phase 版本 功能 前置条件
Phase 9 v0.27.0 PBR材质+环境光照+场景截图 flutter_3d_controller深度适配
Phase 10 v0.28.0 3D文字+网络3D模型 Phase 9完成

十七、参考链接

资源 链接
flutter_advanced_canvas_editor https://pub.dev/packages/flutter_advanced_canvas_editor
flutter_3d_controller https://pub.dev/packages/flutter_3d_controller
image_size_getter https://pub.dev/packages/image_size_getter
extended_image https://pub.dev/packages/extended_image
photo_view https://pub.dev/packages/photo_view
flutter_image_compress https://pub.dev/packages/flutter_image_compress
flutter_slidable https://pub.dev/packages/flutter_slidable
flutter_sticky_header https://pub.dev/packages/flutter_sticky_header
pull_down_button https://pub.dev/packages/pull_down_button
shelf https://pub.dev/packages/shelf
flutter_webrtc https://pub.dev/packages/flutter_webrtc
flutter_blue_plus https://pub.dev/packages/flutter_blue_plus
Impeller https://github.com/flutter/flutter/wiki/Impeller