使用 Flutter 编写 macOS 应用

介绍

自 2018 年推出第一个稳定版本以来,Flutter 已经发展了很多,包括支持多种平台,例如 Web、Windows、LinuxmacOS(甚至还支持 Risk V Architectures!)

使用 Flutter 时,您将主要使用 Dart 语言编写代码。这意味着你不能访问原生平台的功能(除非您使用的是 ffigen[1]jnigen[2])。尽管在 pub.dev 上有很多库,涵盖了访问原生平台功能(Android 存储、连接状态等)方面的大部分需求,但你可能需要一些时间来编写你的特定平台处理一些任务的代码。幸运的是,Flutter 提供了一个 API 来做到这一点。这些称为平台渠道[3]

要了解有关平台渠道的更多信息,我建议阅读 Invertase 开源工程师 Mais Alheraki 的这篇文章[4]

我最近需要为一个宠物项目编写代码,我发现文档中没有关于如何在 macOS 上执行此操作的资源。因此,在本文中,我们将学习如何为 macOS 应用程序编写特定于平台的代码。

对于本教程,我们将编写一个简单的 macOS 应用程序。该应用程序将显示有关设备电池的信息,例如剩余时间、当前容量以及是否正在充电。

使用 Flutter 编写 macOS 应用

设置

所以首先,我们将创建一个新的 Flutter 应用程序。由于我们仅针对 macOS,因此我们将取消选中其他平台

使用 Flutter 编写 macOS 应用

Flutter部分

我们的项目现已创建。接下来,我们将编写代码的 Dart 部分。我们将创建一个 DeviceBatteryChannel 来处理我们对本机 API 的调用:

使用 Flutter 编写 macOS 应用

完整文件:device_battery_channel.dart[5]

这里发生了什么事

我们创建了一个类来处理对本机 API 的调用。在这个类中,我们定义了一个名为 com.stevenosse.battery/device_battery 的 Method Channel。这个类定义了三个方法来有效地处理我们的调用。让我们深入了解我们的第一个方法,getBatteryLevel:

使用 Flutter 编写 macOS 应用

在此方法中,我们从方法通道调用 getBatteryLevel 方法,不带任何参数。

原生部分

我们的原生代码将用 Swift 编写。

我们完成任务所需的代码是从 StackOverflow 上的这个答案[6]复制和粘贴的。

我们现在将设置我们的方法调用处理程序。为此,我们将重写 AppDelegate 中的 applicationDidFinishLaunching 方法

使用 Flutter 编写 macOS 应用

所以在这里我们实现了我们的方法并启动了我们的方法通道。我们需要实现一个方法调用处理程序(它将处理来自 Dart 代码的调用)。这是我们的 getBatteryLevel 方法的样子:

使用 Flutter 编写 macOS 应用

当收到对 getBatteryLevel 的调用时,我们使用我们的 InternalFinder 类。我们会先检查设备是否有内置电池,然后获取电池的当前电量并返回结果。

此应用程序的完整源代码可在此处获得:https://github.com/stevenosse/battery

总结

我想让本文中的事情变得最简单,以便于理解。然而,我们可以通过使用 Pigeon[7] 来做的更好。 Pigeon 是一个生成器工具,可以使 Flutter 和主机平台之间的通信类型安全、更简单、更快速,它由 Flutter 团队开发。

引用链接

[1] ffigen: https://pub.dev/packages/ffigen
[2] jnigen:
https://pub.dev/packages/jnigen
[3] 平台渠道:
https://docs.flutter.dev/development/platform-integration/platform-channels
[4] 这篇文章:
https://invertase.io/blog/flutter-native-apis-pt1
[5] device_battery_channel.dart:
https://github.com/stevenosse/battery/blob/main/lib/src/services/device_battery_channel.dart
[6] 这个答案:
https://stackoverflow.com/a/57145146/9934529
[7] Pigeon:
https://pub.dev/packages/pigeon

.preview-wrapper pre::before { position: absolute; top: 0; right: 0; color: #ccc; text-align: center; font-size: 0.8em; padding: 5px 10px 0; line-height: 15px; height: 15px; font-weight: 600; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月3日 上午11:26
下一篇 2023年4月3日 上午11:36

相关推荐

  • bettyblocks数据建模介绍

    ttyblocks数据建模介绍 数据建模是数据分析的基础,也是数据科学家和数据分析师必备的技能之一。在数据建模的过程中,我们需要使用各种工具和技术来收集、清洗、转换和可视化数据,以…

    科研百科 2024年11月12日
    0
  • 党建引领 居民自治 社区多维善治化解基层治理难题(党建引领社区治理 为民服务)

    红网时刻新闻通讯员 罗爽 长沙报道 长沙市天心区青园街道湘园社区位于省府新区核心腹地,毗邻百年学府明德中学,社区总面积约1.5平方公里,总人口约5550人。辖区内既有由物业公司进行…

    科研百科 2024年2月4日
    132
  • 社会工作部实权大吗

    社会工作部在中国政府中的地位日益重要。作为政府设立的一个部门,社会工作部负责促进社会公正, 改善社会福利, 提高居民生活质量。在过去几年中, 中国政府通过不断努力, 社会工作部的工…

    科研百科 2024年10月2日
    132
  • 生产型企业用什么管理软件-(生产型企业用什么管理软件)

    生产型企业通常需要综合运用多种管理软件来优化其生产流程、提高效率、降低成本并增强市场竞争力。以下是一些常用的生产型企业管理软件类别及具体实例: ERP(企业资源计划)系统:整合企业…

    科研百科 2024年7月18日
    59
  • 怀孕了做不了科研项目

    怀孕了做不了科研项目,这是一种让人感到困惑和无奈的情况。作为女性,怀孕是一项重大的决定,需要谨慎考虑并做出明智的决策。如果正在面临这种情况,以下是一些建议,希望能有所帮助。 首先,…

    科研百科 2025年4月29日
    1
  • 安阳市科技计划项目管理系统

    安阳市科技计划项目管理系统 近年来,随着科技的不断发展和进步,安阳市也加快了科技创新的步伐,建立了一套完整的科技计划项目管理系统,以促进科技项目的发展。 安阳市科技计划项目管理系统…

    科研百科 2024年7月14日
    35
  • 工程项目管理之成本精细化管理指南(施工项目成本精细化管理)

    建筑行业市场竞争机制逐步完善,招投标价格日趋合理,企业利润空间变窄,在确保工程质量的前提条件下,加强内部管理,压缩可控成本,成为企业提升利润空间的有效手段。目前众多建筑企业将成本管…

    2022年6月17日
    381
  • 研究揭示性别对放牧牦牛脂肪沉积调控机理

      近日,中国农业科学院兰州畜牧与兽药研究所牦牛资源与育种创新团队研究发现,放牧母牦牛相比放牧公牦牛具有更强的脂肪沉积能力。相关研究成果发表在《细胞和发育生物学进展杂志(Front…

    科研百科 2022年5月12日
    315
  • 作者科研项目在哪看

    作者科研项目在哪看 随着科技的不断进步,科研项目的展示和分享已经成为一个越来越重要的话题。在这里,我们将介绍一个名为“作者科研项目在哪看”的平台,它是一个专门为研究人员和学者提供科…

    科研百科 2025年3月20日
    1
  • AR智能巡检-u0026隐蔽工程验收系统(智能隐蔽工程验收记录)

    AR智能巡检&隐蔽工程验收系统 AR智能巡检&隐蔽工程验收系统是一款基于物联网、大数据、云平台的综合管理系统。可针对施工现场管理不足、路桥日常巡检工具原始等行业痛点…

    科研百科 2024年7月18日
    56