根据 2022 年 StackOverflow 调查显示,Flutter 是最受欢迎的跨平台工具之一。自发布以来的 16 个月内,已有超过 200 万开发者采用了 Flutter。在本博客中,我们将浏览 GitHub 上可用的顶级 Flutter 存储库。除了每个存储库之外,还提供了对其优缺点的深入了解以及 GitHub 链接,可帮助您了解它们如何在应用程序开发领域使您受益。
1. Flutter Example Apps
Flutter 社区的知名人士 Pawan Kumar 创建了 FlutterExampleApps[1] 库。该资源库包含一系列 Flutter 示例应用程序,展示了 Flutter 开发中的各种功能、库和最佳实践。他因其 Flutter 教育内容(包括教程、课程和 YouTube 视频)而闻名,并经常分享学习 Flutter 的综合资源。
图片
优点
学习资源:非常适合希望通过实际示例提高 Flutter 技能的初学者和中级开发人员。
灵感:作为项目的灵感,提供有关如何实现某些功能或 UI 设计的想法。
社区贡献:让社区有机会作出贡献,为每个人提供更多的学习资源。
缺点
维护:根据资源库的活跃程度,一些示例可能不会更新到最新的 Flutter SDK 版本,这可能会导致方法或实践过时。
初学者不知所措:Flutter 新手可能会发现,在没有 Flutter 基础知识的情况下,各种示例难以理解或难以理解。
2. Awesome Flutter
在 Solido 托管于 GitHub 的 Awesome Flutter[2] 存储库中,有一份精彩的 Flutter 库、工具、框架和软件的精选列表。它是更广泛的 “awesome ”系列的一部分--“awesome ”系列是 GitHub 上的一系列资源库,收集了各种主题的高质量资源。
图片
优点
多样化的资源:无论您是在寻找用户界面组件、动画库还是状态管理解决方案,“Awesome Flutter ”都能为您提供。
最新信息:该资源库的社区驱动性质意味着会定期添加新资源,从而保持列表的新鲜度和相关性。
质量保证:精心策划的方法确保只包含高质量且与 Flutter 开发人员相关的资源。
缺点
让初学者不知所措:对于 Flutter 的新手来说,海量的信息可能会让他们不知所措,不知从何下手。
取决于社区贡献:名单的质量和时效取决于社区的积极贡献,而这些贡献可能随时间而变化。
3. bloc
Felix Angelov 和社区创建了 bloc[3] 存储库,这是 Flutter 社区中广受欢迎的状态管理解决方案。它旨在将业务逻辑与 UI(用户界面)分离开来,从而促进易于测试、维护和扩展的简洁架构。
图片
优点
干净的架构:鼓励业务逻辑层和 UI 层之间的清晰分离,提高应用程序的可维护性和可测试性。
社区支持:拥有强大的社区和生态系统,提供大量资源、教程和软件包来扩展其功能。
多功能性:适用于从小型到大型的各种应用,为各项目提供一致的状态管理方法。
缺点
难以理解:对于初学者或不熟悉反应式编程的开发人员来说,流和接收器的概念可能具有挑战性。
样板代码:bloc 可能会引入大量样板代码,特别是对于简单的应用程序,其中更轻的状态管理解决方案可能更合适。
4. FlutterFoodBytes
FlutterFoodyBytes[4] 是一个 Flutter 存储库,展示了从 Uplabs 设计中汲取灵感的餐厅应用程序用户界面。它展示了使用 Flutter 实现具有视觉吸引力的餐厅应用程序的过程,重点是用户界面元素和设计。该项目由 2 个主屏幕组成,展示了 Flutter 在创建自定义用户界面和动画方面的能力。
图片
优点
高质量的用户界面:展示 Flutter 创建高质量、具有视觉吸引力、引人入胜且用户友好的用户界面的能力。
跨平台效率:与所有 Flutter 项目一样,FlutterFoodybite 展示了为 iOS 和 Android 平台维护单一代码库的能力,从而减少了开发时间和资源。
开源:作为开放源码,它允许其他开发人员贡献代码,从中学习,并在自己的项目中实施类似的设计。
缺点
功能有限:由于该项目主要关注只有 2 个屏幕的 UI 表示,因此它可能不涵盖实际应用程序所需的后端集成或复杂功能。
维护和更新:根据项目的维护情况,如果项目没有定期更新,可能会出现依赖性或与 Flutter 更新版本的兼容性问题。
5. Flutter Basic Widgets
Pooja Bhaumik 的 Flutter Basic Widgets[5] 存储库可作为用户友好的手册,帮助您理解和使用 Flutter 中的各种基本 Widget。该存储库旨在帮助新的 Flutter 开发人员熟悉基本的小部件,这些小部件是任何 Flutter 应用程序的构建块。
图片
优点
易于学习:非常适合初学者通过实际示例开始学习 Flutter 的 widget 系统的资源。
互动学习:使用 DartPad 作为示例,学习者可以尝试使用部件属性并实时查看结果。
可视化指导:屏幕截图有助于将每个示例的结果形象化,从而增强学习体验。
缺点
范围有限:只关注基本的 widget,因此想要了解更复杂示例的高级用户可能需要另寻他处。
静态内容:除非积极维护,否则资源库的内容可能无法反映最新的实践或小工具更新。
6. Flutter Animate
Flutter Animate 是一个库或工具包,旨在简化和增强 Flutter 应用程序中的动画功能。Flutter 本身附带了一组强大的动画工具和小部件,但像 Flutter Animate 这样的第三方包通常旨在使这些工具更易于访问、更强大或更易于使用。
图片
图片
图片
优点
简化的动画 API:像 Flutter Animate[6] 这样的库通常会提供简化的 API 来创建复杂的动画,使开发人员可以更轻松地向他们的应用程序添加动作。
预建动画:通常包含一系列预构建的动画,可以轻松自定义并集成到 Flutter 应用程序中,从而加快开发速度。
增强性能:可以为动画提供性能优化,即使在复杂的场景中也能确保平滑、无卡顿的运动。
缺点
依赖关系管理:添加第三方库会带来另一个需要管理的依赖关系,这可能会影响应用程序的大小,并有可能带来与未来 Flutter 更新的兼容性问题。
开销:对于非常简单的动画,原生 Flutter 动画工具可能更高效,因为第三方库可能会带来不必要的开销。
7. dio
GitHub 上的另一个 flutter 仓库是 Dio[7],它是 Dart/Flutter 的强大 HTTP 客户端,旨在让 HTTP 请求变得简单高效。它扩展了现有 Dart http 库的功能,为更有效地处理请求和响应提供了更多特性。Dio 尤其适用于 Flutter 应用程序,但也可用于任何基于 Dart 的项目。
图片
优点
功能丰富:与默认的 Dart http 包相比,Dio 提供了一组更广泛的功能来管理 HTTP 请求。
灵活性:它对拦截器、全局配置和请求取消的支持使开发人员能够更好地控制他们的 HTTP 请求。
易于使用:Dio 简化了文件上传、下载和处理 FormData 等任务,这些任务对于默认的 http 包来说可能很麻烦。
缺点
简单任务的复杂性:对于非常简单的 HTTP 请求,与使用 Dart http 包相比,Dio 可能会引入不必要的复杂性。
新用户使用困难:虽然 Dio 的设计旨在方便用户使用,但对于新用户来说,各种功能和选项可能会让他们不知所措。
8. Flutter Blue
Flutter Blue[8] 是 Flutter 的蓝牙插件,旨在为使用 Flutter 开发的跨平台应用程序提供蓝牙通信。它提供了一个全面的 API,用于扫描、连接蓝牙低功耗(BLE)设备并与之交互。
图片
优点
统一API:使用单一代码库简化 iOS 和 Android 上的蓝牙开发。
功能全面:涵盖各种蓝牙功能,包括扫描、连接和数据交互。
积极开发:该插件正在积极开发中,并不断更新以改进功能和兼容性。
缺点
Alpha版本:由于处于 Alpha 版本,API 可能会发生变化,这可能会在未来的更新中引入破坏性更改。
需要设备测试:必须在真实设备上进行测试,这会使开发和测试过程复杂化。
特定平台限制:某些功能(如 MTU 请求)仅限于 Android,这可能会影响跨平台功能的平等性。
9. Table Calendar
TableCalendar[9] 是一个高度可定制、功能丰富的 Flutter 小部件存储库,专为显示日历并与日历交互而设计。它提供了广泛的定制选项,允许开发人员定制日历的外观和功能以满足其应用程序的需求。
图片
优点
高可定制性:提供广泛的样式和自定义选项,使日历与应用程序的设计相匹配。
功能丰富:提供广泛的开箱即用功能,包括事件标记、多种选择模式和自定义构建器。
良好的文档:附带详细的文档和示例,让集成和使用更轻松。
缺点
复杂性:对于初学者或简单的用例来说,各种功能和自定义选项可能会让他们不知所措。
性能:根据定制的复杂程度和事件的数量,较大的日历可能会对性能产生影响。
10. Riverpod
Flutter 开发人员使用 Riverpod[10](一种反应式缓存和数据绑定 Flutter 存储库)来改进他们在 Flutter 应用程序中处理状态管理的方式。它因使异步代码管理变得简单而高效而受到认可。Riverpod 通过提供强大且可扩展的解决方案来解决状态管理中的常见挑战,例如错误处理和数据绑定。
图片
优点
改进的错误处理:自动管理错误和加载状态,提高应用程序的可靠性和用户体验。
增强的可扩展性:通过将业务逻辑与 UI 代码分离,促进可扩展应用程序的开发。
多功能性:支持从简单到复杂的广泛用例,具有拉动刷新等功能。
缺点
学习曲线:新用户可能会发现理解和实施 Riverpod 的概念具有挑战性,特别是如果他们不熟悉状态管理原理的话。
整合工作:将 Riverpod 集成到使用不同状态管理解决方案的现有项目中可能需要大量重构。
翻译自:https://medium.com/solute-labs/top-10-flutter-repositories-on-github-in-2024-423807d1213b
参考资料
[1]FlutterExampleApps: https://github.com/iampawan/FlutterExampleApps
[2]Awesome Flutter: https://github.com/Solido/awesome-flutter
[3]bloc: https://github.com/felangel/bloc
[4]FlutterFoodyBytes: https://github.com/JideGuru/FlutterFoodybite
[5]Flutter Basic Widgets: https://github.com/PoojaB26/FlutterBasicWidgets
[6]Flutter Animate: https://github.com/gskinner/flutter_animate?tab=readme-ov-file
[7]Dio: https://github.com/cfug/dio?tab=readme-ov-file
[8]Flutter Blue: https://github.com/pauldemarco/flutter_blue
[9]TableCalendar: https://github.com/aleksanderwozniak/table_calendar?tab=readme-ov-file
[10]Riverpod: https://github.com/rrousselGit/riverpod