Flutter Loro FFI

Flutter插件,用于Loro FFI绑定,提供高性能、易用的CRDT文档管理接口。

🌟 特性

  • 高性能:基于Rust Loro库构建,效率极高
  • 易用性:面向对象的Dart API,配备完整文档
  • 跨平台:支持Android、iOS、Windows、macOS和Linux
  • CRDT同步:内置支持无冲突复制数据类型
  • 实时协作:支持实时文档同步
  • 可靠性:全面的错误处理和资源管理

📋 要求

  • Flutter 2.10.0或更高版本
  • Dart 2.17.0或更高版本

🚀 快速开始

安装

flutter_loro_ffi添加到您的pubspec.yaml依赖中:

dependencies:
  flutter_loro_ffi: ^0.1.0

然后运行:

flutter pub get

基本使用

import 'package:flutter_loro_ffi/loro_ffi.dart';

void main() {
  // 创建文档实例
  final doc = LoroDoc();
  
  try {
    // 设置PeerID(可选,用于区分不同设备/用户)
    doc.setPeerId(12345);
    
    // 插入文本
    doc.insertText("Hello, ", 0);
    doc.insertText("World!", 7);
    
    // 提交事务
    doc.commit();
    
    // 获取文本内容
    final text = doc.getText();
    print("文档内容: $text"); // 输出: 文档内容: Hello, World!
    
    // 导出更新(用于同步)
    final updates = doc.exportAllUpdates();
    print("导出的更新大小: ${updates.length} 字节");
    
    // 创建另一个文档并导入更新
    final doc2 = LoroDoc();
    doc2.import(updates);
    print("同步后的文档内容: ${doc2.getText()}"); // 输出: 同步后的文档内容: Hello, World!
    
    doc2.dispose();
  } finally {
    // 释放资源
    doc.dispose();
  }
}

📚 API参考

LoroDoc

构造函数

LoroDoc()

创建一个新的Loro文档实例。

方法

insertText(String text, int position)

在指定位置插入文本。

  • 参数:
    • text: 要插入的文本内容
    • position: 插入位置的索引
deleteText(int start, int length)

从指定位置开始删除指定长度的文本。

  • 参数:
    • start: 删除起始位置的索引
    • length: 要删除的文本长度
getText()

获取当前文档的文本内容。

  • 返回: 当前文档的文本内容
commit()

提交当前事务,将所有操作持久化。

exportAllUpdates()

导出文档的所有更新,用于同步到其他设备。

  • 返回: 包含所有更新的字节列表
import(List<int> data)

从其他设备导入更新,用于同步文档。

  • 参数:
    • data: 包含更新数据的字节列表
setPeerId(int peerId)

设置文档的PeerID,用于标识不同的设备或用户。

  • 参数:
    • peerId: 要设置的PeerID
getPeerId()

获取当前文档的PeerID。

  • 返回: 当前文档的PeerID
dispose()

释放文档资源,必须在不再使用文档时调用。

🧪 测试

运行测试

flutter test

运行带覆盖率的测试

flutter test --coverage
genhtml -o coverage coverage/lcov.info

基准测试

dart test/benchmark_test.dart

📱 平台支持

平台 架构
Android arm64-v8a, armeabi-v7a
iOS arm64, x86_64
Windows x64
macOS x64, arm64
Linux x64

🔧 开发

构建原生库

# 为所有平台构建
flutter build ffi

# 为特定平台构建
flutter build ffi --target-platform android-arm64

生成文档

dart doc

📝 示例

查看example目录,获取一个完整的Flutter应用,演示flutter_loro_ffi的使用方法。

🔗 相关链接

📄 许可证

本项目采用MIT许可证 - 详见LICENSE文件。

🤝 贡献

欢迎贡献!请随时提交Pull Request。

📧 支持

如果您遇到任何问题或有疑问,请提交issue


由Loro团队用心制作 ❤️

Libraries

flutter_loro_ffi
Flutter Loro FFI 插件主入口
loro_ffi