#flutter #cross-platform #gui-framework #business #native #dart #flexible

bin+lib rinf

Rust 用于本地业务逻辑,Flutter 用于灵活美观的 GUI

59 个稳定版本

6.15.0 2024年7月27日
6.14.0 2024年6月30日
6.7.0 2024年3月15日
5.4.0 2024年1月15日
4.17.1 2023年11月24日

#44GUI

Download history 13195/week @ 2024-05-05 13254/week @ 2024-05-12 13288/week @ 2024-05-19 13075/week @ 2024-05-26 14037/week @ 2024-06-02 15725/week @ 2024-06-09 14677/week @ 2024-06-16 12702/week @ 2024-06-23 14356/week @ 2024-06-30 19478/week @ 2024-07-07 20728/week @ 2024-07-14 22145/week @ 2024-07-21 22703/week @ 2024-07-28 23054/week @ 2024-08-04 25309/week @ 2024-08-11 19579/week @ 2024-08-18

93,934 每月下载量

MIT 许可证

29KB
460

Rinf: Flutter 中的 Rust

Pub Version Crate Version GitHub Stars Test App GitHub License

Rust 用于本地业务逻辑,Flutter 用于灵活美观的 GUI

Preview

Rinf 是一个生产就绪的框架,用于使用 Flutter 和 Rust(内置功能齐全)创建美丽且性能卓越的跨平台应用程序。只需将此框架添加到您的应用程序项目中,您就可以开始编写 Flutter 和 Rust 代码了!

🎮 演示

访问在网络上运行的 演示,体验 Flutter 和 Rust 结合带来的流畅和愉悦。您还可以查看 示例代码

🖥️ 平台支持

所有可用的 Flutter 平台都经过 测试 和支持。此框架自动处理具有挑战性的构建设置。

  • ✅ Linux:已测试并支持
  • ✅ Android:已测试并支持
  • ✅ Windows:已测试并支持
  • ✅ macOS:已测试并支持
  • ✅ iOS:已测试并支持
  • ✅ Web:已测试并支持

📞 通讯

以下是带有小部件的 Dart 代码,之后是带有业务逻辑的 Rust 代码。

StreamBuilder(
  stream: MyMessage.rustSignalStream,
  builder: (context, snapshot) {
    final rustSignal = snapshot.data;
    if (rustSignal == null) {
      return Text("Nothing received yet");
    }
    final myMessage = rustSignal.message;
    return Text(myMessage.currentNumber.toString());
  },
),
MyMessage {
    current_number: 7,
    other_bool: true,
}
.send_signal_to_dart();

当然,以类似的方式也可以从 Dart 到 Rust 进行操作。

所有消息类和结构体都由 Rinf 生成。您只需使用 Protobuf 简单定义消息模式,就可以方便地在 Dart 和 Rust 之间进行消息传递。

🎁 优点

  • 真正简单:设置您的应用程序只需大约一分钟左右。
  • 高效:所有通信都仅通过本地 FFI 进行。没有网页浏览器、网络服务器、隐藏的线程或不必要的内存复制,这些都可能导致性能开销。此设置作为 Dart 和 Rust 的一种非常薄的包装。
  • 最小化:这不是一个庞大的框架,不需要您安装许多依赖项和使用复杂的 CLI 命令。只需专注于您使用首选的 Flutter 和 Rust 库编写的代码。
  • 可扩展性:在 Dart 和 Rust 之间创建数百甚至数千个消息 API 感觉非常顺畅和整洁。此外,您有灵活性,可以使用任意数量的 Rust 库包,也许包括您可能正在工作的那些。
  • 高级接口:无需处理敏感的构建文件,无需担心内存安全。继续使用您熟悉的 Dart 和 Rust。
  • 维护良好:我们的自动化工作流程包括构建测试,始终保持在通过状态,这得益于主分支保护规则。此外,外部依赖项的数量尽可能保持最低,文档组织得也很有条理。
  • 方便的调试:所有调试功能都是默认提供的,无需处理浏览器或移动模拟器。此外,Rust逻辑在Dart的热重载时也会自动重启。
  • 可靠:每个组件都由庞大的社区支持,确保了对未来安全的强烈关注。你可以轻松地确保团队的稳定性,因为该框架的底层概念相当简单。

🐦 为什么使用Flutter?

虽然Rust是高性能原生编程的强大语言,但其构建图形用户界面的生态系统远未成熟。尽管Rust已经有了一些GUI框架,但它们无法与Flutter提供的广泛支持和流畅的开发体验相媲美。只有Flutter可以从单个代码库编译到所有6个主要平台。

Flutter是一个强大且多功能的框架,因其用于构建具有精美用户界面的跨平台应用而受到广泛欢迎。它提供声明式模式、美丽的部件、热重载、方便的调试工具和开箱即用的用户界面专用包。

🦀 为什么使用Rust?

虽然Dart在GUI应用中表现出色,是一种出色的面向对象语言,但其非原生垃圾收集可能无法始终满足性能要求,并且可能缺少高级数据处理包。这正是Rust发挥作用的地方,它提供了大约比Dart快2~40倍的惊人速度优势,同时能够利用多线程和各种crates来完成任务。

Rust在Stack Overflow上获得了忠实追随者,是最受欢迎的编程语言。其原生性能得益于零成本抽象哲学,确保了高生产力。许多开发者预测Rust有可能在未来取代C++。Rust的简单性、内存安全性、在各种场景中的优越性能、充满活力的社区和强大的工具支持是其日益增长的受欢迎程度的原因。

📖 文档

查看文档,了解您需要了解的如何使用此工具的所有信息。

👥 贡献

如果Rinf对您有所帮助,请考虑给我们GitHub仓库点个星,并对我们的Pub包点个赞。您也可以通过在网上传播这个框架来支持我们。

我们感谢您对这个项目发展的贡献!我们始终欢迎讨论和pull请求,所以请随时在我们GitHub仓库上发表您的想法或意见。

GitHub contributors

依赖项

~0–15MB
~205K SLoC