使用 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

相关推荐

  • 项目管理系统的功能

    项目管理系统的功能 项目管理系统是一种用于管理项目的工具,可以帮助组织更好地规划和执行项目任务。项目管理系统可以提供以下功能: 1. 项目计划:项目管理系统可以创建和更新项目计划,…

    科研百科 2024年8月19日
    43
  • 中国迅速成为科技大国,背后的汉语优势,值得中国人深思(中国已经成为科技大国)

    1960年,美国人得到了人类历史上第一束激光,随后美苏开始研制激光武器。然而,在激光武器上,中国却走在了美俄前面,有分析认为至少领先美国15年。 2010年,以俄美为主的国际空间站…

    科研百科 2024年4月14日
    182
  • 考研需要科研项目

    考研需要科研项目 考研是每个学生都面临的挑战,它不仅考查学生的理论知识,还考查学生的实践能力和综合素质。为了让学生更好地应对考研,科研项目是非常重要的一部分。 科研项目是考研中非常…

    科研百科 2025年2月21日
    0
  • 科研项目风险分析报告

    科研项目风险分析报告 科研项目是现代科学发展的重要支撑,但同时也存在着各种风险。本文对科研项目的风险进行了分析,旨在为科研项目的决策者提供参考和帮助。 一、项目背景 本文分析的科研…

    科研百科 2025年2月6日
    15
  • 项目管理 敏捷管理

    项目管理和敏捷管理是现代组织中非常重要两种管理方法。这两种方法都有助于企业提高项目的效率和质量,并降低风险。本文将介绍项目管理和敏捷管理的概念,以及这两种方法的不同之处,并探讨如何…

    科研百科 2024年7月23日
    48
  • 旅行社管理系统项目论述

    旅行社管理系统项目论述 随着旅游业的不断发展,旅行社需要更高效、更自动化的系统来管理他们的业务。一个旅行社管理系统可以帮助旅行社实现更高效的客户关系管理、预订管理、财务管理、员工管…

    科研百科 2025年1月27日
    1
  • 科研项目申请报告范本

    科研项目申请报告范本 科研项目申请报告范本 随着科技的不断发展,科研项目的申请变得越来越普遍。一份好的科研项目申请报告能够帮助科研项目申请获得成功。本文将介绍一份科研项目申请报告范…

    科研百科 2025年5月21日
    1
  • 系统集成项目管理师多少分合格

    系统集成项目管理师多少分合格 系统集成项目管理师(简称“IPMP”)是一个非常重要的职业,它可以帮助组织实现数字化转型。系统集成项目管理师的合格分数也是一个备受关注的话题。那么,系…

    科研百科 2024年8月14日
    37
  • AI又火了,这一次云厂商能赚到钱吗?(云厂商iaas产品)

    图片来源@视觉中国 文|脑极体 由ChatGPT带来的AI热潮还在不断涌现并升温,我们又将进入一个“AI之夏”,到底谁能赚到第一桶金呢?最近,美国著名投资机构A16Z在一篇题为《W…

    科研百科 2023年4月28日
    284
  • 江苏省自然资源系统推进党建与业务深度融合调查(自然资源局党建与业务融合)

    由青年党员干部组成的先锋突击队,积极发挥“头雁”作用,扎实推进“支部建在项目上”,精准定制建设项目专属“服务包”,年内实现仅用6个工作日完成从拿地到方案报审的突破……据了解,江苏省…

    科研百科 2024年2月10日
    130