flutter 初识(开发体验,优缺点)

前言

最近有个跨平台桌面应用的需求,需要支持 windows/linux/mac 系统,要做个更新应用的小界面,主要功能就是下载更新文件并在本地进行替换,很简单的小功能。

花了几分钟构建没做 UI 优化的示例界面:
请添加图片描述

由于我们的客户端程序员最近很忙,没时间做这个功能,正好我有空而且感兴趣。调研了一下跨平台应用的几个开发框架,由于我的主语言是 go,一开始看了下 gowails,开发使用很方便,但是其是依赖 webview 的,在目标机器上一定要安装 webview 才能够使用,不在乎这点的可以用,编译出来的应用体积特别小,很好用。

这时突然想到 flutter 目前也支持了桌面端的应用开发,使用它主要是看中了:

  • GitHub 的星标多
  • Google 大厂背书
  • 社区活跃
  • dart 简单,易于上手
  • 移动端入手的,移动端开发较为完善
  • 性能高

上手用用试试吧!好用的话后续可以在团队里推广下。

flutter 的优缺点

优点

  • 快速的开发周期: 虽然热重载现在大部分框架都支持了,但是也提一下,热重载功能使开发周期变得更快。你可以在应用运行时实时看到代码更改的效果,这有助于快速调试和迭代开发。
  • 漂亮的用户界面: flutter 提供丰富的内置小部件和自定义绘制选项,使开发者能够轻松创建精美且高度定制化的用户界面。
  • 高性能: flutter 使用 Skia 图形引擎进行渲染,可以在不同平台上实现高性能的用户界面体验。它还可以通过自带的硬件加速特性提供流畅的动画和过渡效果。
  • 单一代码库: 开发者只需维护一个代码库,即可为多个平台生成应用程序,这简化了代码维护和团队协作。
  • 丰富的社区支持: flutter 拥有一个庞大且积极的社区,提供了大量的资源、插件和解决方案,帮助开发者解决问题并加速开发进程。

缺点

  • 应用大小: 由于 flutter 应用程序需要包含其自身的运行时引擎和框架,因此应用的初始大小可能会比较大。虽然 Google 在不断努力减小应用的大小,但对于某些应用来说,这仍然可能是一个问题。
  • 平台特定性: 虽然 flutter 可以构建跨平台应用,但在某些情况下,特定平台的特性和行为可能无法完全抽象化,需要进行特定平台的定制开发。这应该是所有跨平台应用都需要面对的问题。
  • 第三方库支持: 虽然 flutter 社区提供了许多插件和库,但与其他一些平台相比,某些特定领域的第三方库可能相对较少。特别是桌面端的开发,目前支持还是比较少的。
  • 更新频率: flutter 框架在不断发展,新版本会带来新特性和改进,但这也可能导致需要频繁更新应用以保持与最新版本的兼容性。毕竟是新东西,多修修 bug 是好事。

我的跨平台开发经验

专做移动端的 phonegap(cordova) => 专做桌面端的 electron => 兼容小程序的 uniapp => 移动桌面端 flutter

总结

flutter 的上手难度还行,整体开发体验还不错,中文社区也挺强大的,基本上问题一搜都能有解答。

不过我做上述的小应用,还是花了一天的时间(搭建开发环境、熟悉其框架结构以及基础语法,数据请求等),主要还是遇到了一个编码的坑,长时间没找到解决方案。

这里要吐槽一下,我做的应用有个解压缩的功能,遇到了 gbk 编码问题,flutter 对中国用户真是不怎么友好,这个问题花了好半天,最后还是翻源码才解决(可能是我太菜了 =-=!)。

跨平台提供了便利性,同样也提高了复杂性,对开发者的知识广度还是有需求的。在使用这些跨平台的开发框架时,若是比较底层的,免不了要和原生打交道,一般问题多找找还是能够找到解决方案的。

在选择使用 flutter 还是其他技术时,应该根据项目需求和团队经验来进行权衡和决策。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63862.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32F429IGT6使用CubeMX配置串口通信

1、硬件电路 2、设置RCC,选择高速外部时钟HSE,时钟设置为180MHz 3、配置USART1引脚 4、生成工程配置 5、部分代码 //重定向printf函数 int fputc(int ch, FILE *f) {HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);return ch; } /* USER CODE BE…

不基于比较的排序:基数排序

本篇只是讨论桶排序的具体实现,想了解更多算法内容可以在我的博客里搜,建议大家看看这篇排序算法总结:排序算法总结_鱼跃鹰飞的博客-CSDN博客 桶排序的原理: 代码:sort1是一个比较二逼的实现方式浪费空间,s…

[git] git基础知识

git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目 git易于学习,性能极快 什么是版本控制? 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况,可以记录文件修改历史…

【ElasticSearch入门】

目录 1.ElasticSearch的简介 2.用数据库实现搜素的功能 3.ES的核心概念 3.1 NRT(Near Realtime)近实时 3.2 cluster集群,ES是一个分布式的系统 3.3 Node节点,就是集群中的一台服务器 3.4 index 索引(索引库) 3.5 type类型 3.6 doc…

通达OA SQL注入漏洞【CVE-2023-4166】

通达OA SQL注入漏洞【CVE-2023-4166】 一、产品简介二、漏洞概述三、影响范围四、复现环境POC小龙POC检测工具: 五、修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损…

我的Python教程:使用Pyecharts画柱状图

Pyecharts是一个用于生成 Echarts 图表的 Python 库。Echarts 是一个基于 JavaScript 的数据可视化库,提供了丰富的图表类型和交互功能。通过 Pyecharts,你可以使用 Python 代码生成各种类型的 Echarts 图表,例如折线图、柱状图、饼图、散点图…

电脑开不了机如何解锁BitLocker硬盘锁

事情从这里说起,不想看直接跳过 早上闲着无聊,闲着没事干,将win11的用户名称改成了含有中文字符的用户名,然后恐怖的事情发生了,蓝屏了… 然后就是蓝屏收集错误信息,重启,蓝屏收集错误信息&…

Windows下安装 Redis

目录 1.下载 1.1.Redis官网 1.2.github下载地址 2.安装步骤 2.1.解压Redis压缩包 2.2.创建临时服务 2.3.启动客户端 2.4.注册Redis服务 3.总结 4.致谢 1.下载 1.1.Redis官网 Download | Redis Redis 官方网站没有提供 Windows 版的安装包,但可以通过…

x11 gtk qt gnome kde 之间的区别和联系

Linux 下的图形库介绍 一、Linux 图形领域的基础设施 1.1 X Window X Window从逻辑上分为三层:X Server、X Client和X协议。 最底层的X Server(X服务器)主要处理输入/输出信息并维护相关资源,它接受来自键盘、鼠标的操作并将…

【ES】笔记-函数参数默认值

函数参数默认值 ES6 允许给函数参数赋值初始值 1. 形参初始值 具有默认值的参数,一般放到最后 function add(a,b,c10){return abc}let resultadd(1,2);console.log(result);2. 与解构赋值结合 function connect({host"127.0.0.1",username,password,port…

AI绘画网站都有哪些比较好用?

人工智能绘画网站是一种利用人工智能技术进行图像处理和创作的网站。这些绘画网站通常可以帮助艺术家以人工智能绘画的形式快速生成有趣、美丽和独特的绘画作品。无论你是专业的艺术家还是对人工智能绘画感兴趣的普通人,人工智能绘画网站都可以为你提供新的创作灵感…

【C语言】进阶指针,超详解,含丰富代码示例

文章目录 前言指针进阶的重点内容1.字符指针2.数组指针3.指针数组4.函数指针5.函数指针数组6. 指向函数指针数组的指针 总结 这里是初阶的链接,方便大家对照查看!!!添加链接描述 前言 大家好呀,今天和大家将指针进阶…