Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用 Flutter 创建桌面应用程序[Flutter专题7]

如何使用 Flutter 创建桌面应用程序[Flutter专题7]

作者头像
徐建国
发布于 2021-11-30 12:51:57
发布于 2021-11-30 12:51:57
4.7K00
代码可运行
举报
文章被收录于专栏:个人路线个人路线
运行总次数:0
代码可运行

如何使用 Flutter 创建桌面应用程序

介绍

开发人员可以选择编写多种类型的应用程序:控制台应用程序、移动应用程序、Web 应用程序和桌面应用程序。

桌面应用程序在具有各种 UI 元素的系统窗口内运行。如果您要制作桌面应用程序,有多种不同的框架、UI 工具包和编程语言可供选择。

有两种类型的桌面应用程序开发 API:特定于平台的和跨平台的。特定于平台的 API 仅支持一种目标操作系统。例如,Cocoa API 提供了用于为 macOS 平台开发桌面应用程序的接口。另一方面,跨平台 API 允许开发人员使用单个通用 API 为多个操作系统制作桌面应用程序。

如今,跨平台开发框架流行的原因如下:

  • 开发人员可以为多个平台维护一个单一的代码库,因为跨平台框架的 API 为特定于平台的 API 提供了很好的抽象
  • 快速功能交付,意味着无需通过编写特定于平台的代码为不同的操作系统实现相同的功能,因此可以有效地交付新功能

在本文中,我将解释如何使用 Flutter 创建、构建和发布原生跨平台桌面应用程序。我们还将讨论 Flutter 受欢迎的原因。

什么是Flutter?

Flutter 是一个跨平台的应用程序开发框架,我们可以使用它为多个平台构建本地编译的应用程序:移动、桌面和 Web。

已知支持的输出目标是 AndroidiOS、HTML、HTML Canvas、LinuxWindows、macOS 和 Fushia。Flutter 使用 Dart 作为应用程序开发语言。

Flutter 目前更专注于移动应用程序开发,但也支持基于桌面的目标。

该框架带有自己的小部件工具包。当特定的 Flutter 应用程序启动时,Flutter 将通过Skia 图形库呈现应用程序的 UI 控件。

为什么 Flutter 如此受欢迎?

在跨平台框架开发领域,最关键的问题是如何放置所有平台的抽象层。换句话说,如何为开发人员提供通用 API 而不会给应用程序带来性能问题。

Electron 等桌面应用程序开发框架引入了用于渲染的 Web 浏览器。Apache CordovaIonic 移动应用程序开发框架以同样的方式解决了这个问题。尽管这些框架为开发人员提供了简单的跨平台 API,但由于基于 Web 浏览器的渲染,仍存在严重的性能问题。

Flutter 通过 Dart 库提供简单的跨平台 API,同时还保持卓越的性能。

使用 Flutter 开发桌面应用程序

在本教程中,我将展示如何使用 Flutter 制作一个简单的跨平台桌面应用程序。

搭建 Flutter 开发环境

安装 Flutter 是小菜一碟,因为它就是输入一些终端命令。

具体看我前面的文章介绍

之后,我们需要启用桌面开发模式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 flutter config --enable-<platform>-desktop
// <平台> = linux、windows、macos

如果启用了桌面模式,该flutter devices命令应列出您当前的操作系统。

Flutter 设备命令的屏幕截图

Flutter 设备命令的屏幕截图

创建一个新的 Flutter 应用

像任何其他典型的 CLI 一样,我们可以使用create如下所示的命令创建一个新应用程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flutter create desktop-app

上面的命令将为我们搭建一个简单的入门项目。入门项目包含最少的代码和注释,以帮助我们了解 Flutter 的工作原理。

lib/main.dart文件包含应用程序的主要源代码。让我们修改如下所示的主要源代码以创建一个简单的“Hello World”应用程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'TextPad',
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
      home: Scaffold(
        body: Center(
          child: Text('Hello World')
        ),
      ),
    );
  }
}

编辑源文件后,输入以下命令来运行您的应用程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flutter run -d <platform>
// <platform> = linux, windows, macos

上述命令将在原生窗口中打开 Flutter “Hello World” 应用程序。本机窗口将根据当前操作系统和系统主题配置进行样式设置。

Flutter“Hello World”应用在调试模式下的截图

调试 Flutter 应用

Flutter 开发环境支持热重载功能。因此,我们可以r在您输入flutter run命令的控制台中按键来触发热重载。当应用程序在调试模式下运行时,尝试更改文本小部件的内容。

实现跨平台桌面应用程序

让我们用 Flutter 实现一个小的跨平台桌面应用程序。我们将制作一个名为“TextPad”的小型文本编辑器应用程序。TextPad 有一个大的多行文本字段,我们可以在其中输入我们的笔记。它还有一个操作按钮,可以将当前笔记保存到文件中。TextPad 的屏幕截图如下所示。

示例应用程序的屏幕截图

如上所述,右上角的保存按钮会将当前笔记写入文本文件。保存文件后,TextPad 将显示有关任务完成的通知消息。

与之前的 Hello-World 应用程序类似,将以下源代码添加到主应用程序源文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'dart:io';
import 'package:flutter/material.dart';


void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

    final textController = new TextEditingController();
    final globalKey = GlobalKey<ScaffoldState>();
    final String fileName = 'textPadNote.txt';

     Future<void> _exportToFile(BuildContext context) async {
       final File file = File('${Directory.current.absolute.path}/${fileName}');
       final snackBar = SnackBar(content: Text('Saved to: ${file.path}'));

       await file.writeAsString(textController.text);
       globalKey.currentState.showSnackBar(snackBar);
    }
  @override
  Widget build(BuildContext context) {

    return MaterialApp(
      title: 'TextPad',
      theme: ThemeData(
                brightness: Brightness.dark,
           ),
      home: Scaffold(
        key: globalKey,
        appBar: AppBar(
          title: Text('TextPad'),
          actions: <Widget>[
              IconButton(
                    icon: const Icon(Icons.save),
                    tooltip: 'Export to ${fileName}',
                    onPressed: () {_exportToFile(context);}
                  )]
        ),
        body: Center(
          child: TextField(
                controller: textController,
                maxLines: null,
                keyboardType: TextInputType.multiline,
                expands: true,
                  decoration: InputDecoration(
    hintText: 'Play with your notes here...',
    contentPadding: EdgeInsets.all(12.0)
  ),
          ),
        ),
      ),
    );
  }
}

使用可移植的二进制文件构建您的 Flutter 桌面应用程序

在将您的应用程序发布到 Internet 之前,您可以构建 Flutter 应用程序以获取可移植的二进制文件。这些二进制文件也可以与用户或测试人员共享。此外,您可以使用自己喜欢的安装程序工具制作可安装的二进制文件。

当我们调试应用程序时,将创建可调试的二进制文件。但是,可调试的二进制文件并未针对某个版本进行优化。在终端上执行以下命令来制作优化的二进制文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ flutter build <platform>
// <platform> = linux, windows, macos 

如何发布您的应用程序

发布 Flutter 应用程序有多种方式,但部署方式取决于操作系统的类型。例如,如果您要为 Linux 用户发布您的应用程序,您可以将您的 Flutter 应用程序部署到Snapcraft软件商店。

如果需要为 Windows 用户部署应用程序,可以借助第三方工具制作 Windows 安装程序包 (MSI) 或新的 Windows 应用程序包 (MSIX)。

也可以看我的另一篇文章,我在里面详细的说明了如何将flutter应用部署到 Windows 上,也就是打包成exe可执行文件。

结论

如今,Electron 在桌面应用程序开发中非常流行,因为它允许开发人员使用 Web 技术制作桌面应用程序。然而,由于高物理资源使用率,Electron 应用程序经常成为膨胀软件。Flutter 的性能比 Electron 好,因为它不在 Web 浏览器上执行应用程序的 GUI 逻辑。

Flutter 确实给开发者带来了一些痛点。它带有一种陌生的编程语言和一个全新的小部件工具包。

Flutter 的初始阶段以其令人印象深刻的整体性能和功能给大家留下了深刻的印象。我相信 Flutter 桌面很快就会与 Electron 竞争!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 坚果前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flutter为桌面应用程序开发带来了新的希望
在过去,桌面应用程序的开发通常需要使用特定于操作系统的工具和语言,如C++、C#、Java等。这导致了高昂的开发成本和维护困难。尽管有一些跨平台桌面开发工具,如Electron和Qt,但它们在性能、用户体验和开发效率方面存在一些限制。Flutter的出现改变了这一格局,为桌面应用程序开发带来了新的希望。
菜特鸡鼻涕
2023/09/19
5800
玩过Tauri和Electron,最终我选择Flutter
Flutter、Tauri 和 Electron 都是现代桌面应用程序开发的流行选择,每种技术有其独特的优缺点,本文将对它们进行技术对比。
老码小张
2023/04/16
12.3K0
玩过Tauri和Electron,最终我选择Flutter
Canonical通过Flutter启用Linux桌面应用程序支持
Google 对 Flutter 的目标一直是提供一个可移植的工具包,以构建媲美本机速度运行的精美UI,无论您使用的是哪个平台。为了验证该功能,我们首先关注于Android和iOS移动平台,我们已经在Google Play上看到了8万多个快速,精美的Flutter应用程序。
老孟Flutter
2020/09/11
2.8K0
Canonical通过Flutter启用Linux桌面应用程序支持
IM跨平台技术学习(十):快速对比跨平台框架Electron、Flutter、Tauri、React Native等
开发人员面临着选择正确框架之挑战,以便可以高效构建可在 Windows、macOS 和 Linux 上无缝运行的应用程序。
JackJiang
2024/01/11
1.9K0
IM跨平台技术学习(十):快速对比跨平台框架Electron、Flutter、Tauri、React Native等
桌面应用跨端开发的一些框架
受益于开源技术的发展,以及响应快速开发的实际业务需求,跨平台开发不仅限于移动端跨平台,桌面端虽然在市场应用方面场景不像移动端那么丰富,但也有市场的需求。 相对于个人开发者而言,跨平台框架的使用,主要为了满足以下三个主要能力:
Onegun
2022/11/22
2.4K0
桌面应用跨端开发的一些框架
使用Electron创建跨平台桌面应用
开发和维护一个桌面应用是比较复杂的,所以可以理解现在的公司门为何推动WEB应用或者各种跨平台版本,在过去的十几年里,已经有了很多尝试,Flash、Air、Java和Sliverlight,他们都各自取得了不同程度的成功
疯狂的技术宅
2019/03/27
1.5K0
使用Electron创建跨平台桌面应用
Go每日一库之208:wails(使用 Go 和 Web 技术构建桌面应用程序)
Wails 提供了一种不同的方法:它提供了将 Go 代码和 Web 前端一起打包成单个二进制文件的能力。
luckpunk
2025/01/13
2020
Go每日一库之208:wails(使用 Go 和 Web 技术构建桌面应用程序)
构建现代化的跨平台移动应用程序
本文介绍了四个跨平台应用程序开发的框架和工具包,它们均具有跨平台、易于开发、支持组件化等特点。这些项目能够帮助开发人员快速构建漂亮、跨平台的应用程序,并且在开发过程中提供了很多便利。
小柒
2023/08/10
3140
构建现代化的跨平台移动应用程序
Electron入门教程1 —— 编写第一个桌面应用程序
关于Electron这个框架我就不多介绍,它说白了就是Node和Chromium内核的一种封装。用它开发出来的桌面应用程序其实就是套壳浏览器的应用,这就是为什么它可以用web前端技术来开发,并且可以跨平台的原因了。
害恶细君
2022/11/22
5K0
Electron入门教程1 —— 编写第一个桌面应用程序
C#的跨平台应用程序开发
在现代软件开发中,跨平台应用程序开发是一个重要趋势,它允许开发者编写一次代码并在多个操作系统上运行。C#作为一门流行的编程语言,提供了多种工具和框架来支持跨平台开发。本文将深入探讨C#跨平台应用程序开发的核心概念、主要框架、使用场景以及最佳实践。
Michel_Rolle
2024/10/09
2.7K0
小程序遇上Flutter 3.0框架
Flutter 是一个非常优秀的开发框架,借助 Flutter,开发者可以在 iOS 以及 Android 平台自由地发挥创意,构建交互丰富的、精美的应用程序。
pak
2022/07/12
1.3K0
打算一个卡片记忆软件,全平台架构如何选型?
折腾来折腾去,我打算做一个卡片记忆软件,用来记忆面试题、知识点等。很多东西看了就忘了,我想做一个软件来帮助我记忆。这个软件的功能就是每天给我推送一些卡片,我看了就可以记住,然后就可以刷题了。
程序员朱永胜
2023/11/23
4910
打算一个卡片记忆软件,全平台架构如何选型?
「译」为 JavaScript 开发者准备的 Flutter 指南
Flutter 是一款跨平台的移动应用 SDK,可通过同一套代码构建高性能,高保真的 iOS 和 Android 应用。
三毛
2023/06/09
1.5K0
「译」为 JavaScript 开发者准备的 Flutter 指南
Flutter 让桌面应用的开发更便捷
Flutter2稳定版的发布,除了web的支持外,还有对于桌面端的支持可以将Flutter源代码编译为本机Windows,macOS或Linux桌面应用程序。
Qson
2022/04/11
2.1K0
Flutter 让桌面应用的开发更便捷
为什么除了 Flutter 之外,我们还需要另一个跨平台开发框架?
不久前,谷歌正式推出Jetpack Compose 1.0 版本。近日,JetBrains 在此基础上发布了 Compose Multiplatform Alpha 版本,旨在将 Compose 扩展到桌面和 Web 端。
Try425
2021/08/24
2K0
谷歌裁员重创 Flutter,Ubuntu 桌面应用面临重大挑战
导读:谷歌 Flutter 团队近期的裁员行动,使得 Ubuntu 社区中的 Flutter 开发者开始对该框架的未来走向感到担忧。尽管 Canonical 的 Flutter 应用程序开发工作依然稳步推进,但 Flutter 2024 年路线图的调整无疑引发了广泛的不安。尤其是某些关键的桌面功能未能纳入计划之中,而谷歌似乎更加注重 Web 和移动端的发展。接下来,我们将深入探讨此次裁员对 Flutter 生态系统的影响,以及为何 Ubuntu 社区的开发者会感到焦虑。
深度学习与Python
2024/05/22
3680
谷歌裁员重创  Flutter,Ubuntu 桌面应用面临重大挑战
打造跨平台应用:单一代码库,多平台运行 | 开源专题 No.84
.NET Multi-platform App UI (.NET MAUI) 是一个跨平台的框架,用于使用 C# 和 XAML 创建移动和桌面应用程序。通过使用 .NET MAUI,您可以开发能够在 Android、iOS、iPadOS、macOS 和 Windows 上运行的应用程序,并且这些应用程序共享相同的代码库。
小柒
2024/05/29
2600
打造跨平台应用:单一代码库,多平台运行 | 开源专题 No.84
基于跨平台的移动应用开发框架研究
当前由于移动互联网技术的日益发展,人们对移动互联网程序的要求也是越来越高,以往的互联网程序已经不能满足人们日益增长的需求,对此相关的工作技术人员要不断努力,研发出与时俱进的移动互联网程序。
二山山记
2022/11/25
1.5K0
基于跨平台的移动应用开发框架研究
Flutter for Windows桌面端稳定版发布
自从Flutter 创建以来,Flutter就致力于打造一个能够构建精美的、可高度定制的、并且可以编译为机器码的跨平台应用解决方案,以充分发挥设备底层硬件的全部图形渲染能力。今天,Flutter 对 Windows 生产版本的正式支持是对这一愿景实现的重要标志。它使 Windows 开发者也能享受到移动开发的相同生产力和功能。
CrazyCodeBoy
2022/03/22
2.2K0
Flutter for Windows桌面端稳定版发布
Flutter与Xamarin跨平台移动开发对比
在过去的十年中,移动行业经历了巨大的增长,尤其是在应用程序开发方面。据Statista Reports统计,全球智能手机用户超过20亿,预计到2022年底,这一数字将超过50亿。在这些智能手机中,几乎100%运行在三种流行平台上:谷歌的Android、苹果的iOS和微软开发的Windows Mobile。一段时间以来,移动应用程序开发人员依赖特定于平台的工具来开发只能在单一平台上运行的本地应用程序。例如,Kotlin和Java主要用于开发Android原生移动应用程序,而iOS开发人员则使用Objective-C和最近的Swift,您可以在我们对这两种语言的比较中了解到。
leon公众号精选
2022/04/27
3.9K0
Flutter与Xamarin跨平台移动开发对比
推荐阅读
相关推荐
Flutter为桌面应用程序开发带来了新的希望
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验