iOS开发者是钻研SwiftUI还是尝试接触Flutter好呢?

news/2024/7/20 21:27:24 标签: ios, swiftui, flutter


首先,作为只做iOS的开发者,你最好的选择一定是苹果官方的SwiftUI。

易用性就不说了,苹果迭代了这么多年,终归是自家的主打产品。

论效率也是原生的控件最好,各种优点就不赘述了。

但是,考虑到跨平台是每一款成功产品的趋势,有什么理由在产品火爆iOS时不去做安卓版呢?我相信没有人会和更大的市场和更多的收入过不去。

假如你希望一上来就支持多平台,那么flutter可能是你比较好的选择之一了。我就曾经经历过原生iOS的火爆之后,大量用户希望也有安卓版,然后纠结了许久,最终还是选择了Flutter重做了整个App。这里面的辛酸就不用多说了,满满的重复劳动。

我相信犹豫不定的多数都是知道Flutter的优点,但是不知道有什么坑的人。在此我就从Flutter的缺点来给你一些前瞻性的警告,这些都是我个人使用的经历(可能包含过时的信息哦!欢迎指正):

1 Flutter一直在保持更新,所以即使是最新的stable分支,也会有一些bug,甚至在github的issue上存在有半年到一年之久还是open状态。而有些bug可能就比较让人苦恼了,比如截止目前最新的1.26版,还有使用v2版插件会导致其他插件无法正常工作的问题。

2 Flutter的issue反馈还算及时,但是除非是严重的崩溃级别的bug,靠flutter团队去解决的速度很令人堪忧。我之前的app遇到的几个严重的问题,最终都靠我自己解决的。直到最近我才发现这些问题已经在后来的更新中修复了。

3 Flutter毕竟是在模仿原生控件去用skia渲染出来的(你可以理解为用做游戏的方式画出App来),所以它目前还是没办法像素级复刻原生效果。是的,我指的是iOS。因为谷歌的缘故,对安卓的支持自然有同等资源标准去对待,所以安卓平台不用担心。

4 虾分发(xiafenfa.com)一个创新的开发者服务平台,为开发者提供iOS&Android App的开发、封装、测试、分发上线等一系列效率工具。上页面看看有没有大问题。

5 Flutter的性能可以算优化的不错了,但是某些具体场景,比如超大内容量的ListView,或者类似地图的大量图标同时显示的情况,还是要用到一些特殊的处理方式。你可以这样想,不是做不到,而是对性能要求高的场景,一般的控件不满足需求。

6 Flutter不支持反射。(因为苹果商店的缘故吧)所以有些你认为很简单的事,在这里可能没有那么简单——比如json对象的序列化和反序列化需要用代码生成器生成。虽然也没有那么麻烦吧,但是提前知道哪些不能用也能规避一些问题。

7 目前没有很好的热更新方案。因为苹果商店的缘故,谷歌并不打算未来支持代码推送这类热更新的方式。但是并不是不能支持,理论上还是可行的,这部分可以考虑用lua,也可以考虑用别的脚本语言,界面部分也可以用Dynamic Widget。这部分我正在开发一套完整的热更新方案,如果有兴趣可以关注一下。

8 目前跨平台支持还有待提高,只有移动端的两个平台算是支持的比较完善。假如你还考虑桌面或者web,那么还需要考虑一下短期内不能有很好的生产条件。比如目前web的加载速度极慢,好像也没有很简单的处理方法,只能在网页加载前做个loading页面吧。


http://www.niftyadmin.cn/n/5189937.html

相关文章

号卡分销管理系统搭建

随着移动互联网的发展,各种手机应用层出不穷,其中包括了很多用于企业管理的软件。号卡系统分销管理软件就是其中的一种。它是一种基于移动互联网的企业管理软件,能够帮助企业进行号卡的分销管理,从而提高企业的效率和竞争力。 …

【咖啡品牌分析】Google Maps数据采集咖啡市场数据分析区域分析热度分布分析数据抓取瑞幸星巴克

引言 咖啡作为一种受欢迎的饮品,已经成为我们生活中不可或缺的一部分。随着国内外咖啡品牌的涌入,新加坡咖啡市场愈加多元化和竞争激烈。 本文对新加坡咖啡市场进行了全面的品牌门店数占比分析,聚焦于热门品牌的地理分布、投资价值等。通过…

PY32F002B从压缩包到实现串口printf输出

最近学习使用芯领的PY32F002B开发板,记录学习历程供有同样需求的人参考。 本文主要讲述利用开发板实现printf语句串口输出。 开发环境的初步搭建 官方提供了一个压缩文件,文件名py32f002B_231026.zip, 链接:https://pan.baidu.c…

前后端分离项目在Linux的部署方法、一台Nginx如何部署多个Web应用

需求场景:目前有三个前后端分离项目(vuespringboot),Linux服务器一台,nginx一个,比如服务器地址为www.xxxxxxx.com 我想通过80端口访问服务①(即访问www.xxxxxxx.com);通过81端口访问服务②(即…

【原创】java+swing+mysql校园活动管理系统设计与实现

前言: 本文介绍了一个校园活动管理系统的设计与实现。该系统基于JavaSwing技术,采用C/S架构,使用Java语言开发,以MySQL作为数据库。系统实现了活动发布、活动报名、活动列表查看等功能,方便了校园活动的发布和管理&am…

计算机毕业设计选题推荐-一周穿搭推荐微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

基于Python3的scapy解析SSL报文

scapy对于SSL的支持个人觉得不太好,至少在构造报文方面没有HTTP或者DNS这种常见的报文有效方便,但是scapy对于SSL的解析还是可以的。下面我们以一个典型的HTTPS的报文为例,展示scapy解析SSL报文。 一:解析ClientHello报文 from sc…

ES7.x 新特性与重大变化

1.1 ES7.0 自适应副本选择。更智能的选择副本。refresh刷新策略。在不设置刷新时间的情况下,从原来的默认1s刷新一次,添加一个判断策略,如果30s内没有搜索,则不再refresh。默认配置5个分片,改为1个分片。使用Lucene8, 改进了 top-k 查询的搜索性能 。更好的主节点选举能力…