开源项目——FLutter/iOS/Android 编写的三个计算器 APP
前端时间使用 Flutter,iOS,Android 三种技术编写了三个相同功能的计算器 APP,github地址,https://github.com/ThinkerJack/android-ios-flutter_notepad。
ios_calculator
1.项目简介
使用 Swift 编写的 IOS APP,实现了计算器的常见功能。
2.环境简介
语言:Swift 5.4
UI 框架:UIKit
包管理工具:CocoaPods
布局框架:SnapKit 5.0.0
3.项目截图
4.开发流程与代码逻辑简述
打开 Xcode 创建 IOS APP 项目。
引入包管理工具和框架。
编写布局类,继承 UIView。编写 Button 组件,继承 UIButton。
封装计算逻辑工具类。
在 ViewController 中引入布局文件,通过布局类中的按钮点击协议完成计算器的计算逻辑。
5.技术准备
M1 mac 安装有问题
6.总结
学习 IOS 开发也有一段时间了,学习途径包括哔哩哔哩视频教程,YouTube 视频教程,Apple 官网文档,阅读相关书籍。因为拥有 Flutter 和 Android 的开发经验,学习过程中没有什么大的阻碍,唯一觉得不好的一点是中文社区的匮乏,面向初学者的文章和书籍都比较少,随着 IOS 相关技术的破坏性更新,导致很多教程不适用,耽误了不少时间。编写 UI 有拖拽 storyboard 和纯代码两种方式,个人还是比较喜欢纯代码的方式。开发语言有 Swift,objective-c,UI 框架有 UIkit 和 SwiftUI,选择了资料比较多的 SWift 和 UIkit 学习,技术选择的多样性在最初也造成了一些困惑,因为精力有限,不可能全都学。后续使用 IOS 技术写一些复杂点的 APP,提升技术水平。
android_calculator
1.项目简介
使用 java 编写的 Android APP,实现了计算器的常见功能。
2.环境简介
语言:java 1.8
依赖库:详见 android_calculator/app/build.gradle 下的 dependencies
3.项目截图
4.开发流程与代码逻辑简述
编写布局 xml,使用
constraintlayout
布局activity
中注册控件,监听点击事件点击=号时执行计算逻辑
5.技术准备
java 基础语法
6.总结
三种技术写一个项目,感觉给自己挖了一大坑,本意是熟悉一下学习过的技术,可能最近工作和学习的状态都有所下滑,感觉没有什么动力了。
写之前看了一下其他的开源项目,参考了一下布局,学习了constraintlayout
布局,其实本来想用 jetpack 试一下,不过自己 kotlin 还没学,而且学到太多也有点记不住,就放弃了。
可能需要歇一歇再继续。
flutter_calculator
1.项目简介
使用 dart 编写的 Flutter APP,实现了计算器的常见功能。
2.环境简介
语言:Dart 2.14
框架版本:Flutter stable, 2.0.6
3.项目截图
4.开发流程与代码逻辑简述
Gridview 和 Expanded 实现布局
5.技术准备
Dart 语法
FLutter 基础
6.总结
编程其实是一种思想的表达手段,某一天我突发奇想,想做一个什么样的 APP,基于这个想法就有了客户端的页面,也是基于这个想法有了后端的业务。编程只不过是实现这个想法的工具,编程和程序员,就像文字和作家,画笔和画家之间的关系,重要的不是实现想法的手段,重要的是心,一个充满了想法的心灵才是最宝贵的。作家什么都不想写,文字对他有什么用呢,画家什么都不想画,画笔又有什么用呢,这样才能准确的理解编程的作用,如果没有一个改变世界的想法,google 搜索和苹果手机也都不会出现了,拉里佩奇或乔布斯代码写的多好都没用。由此可见,互联网行业大部分的行业都是为了想法在服务,不管是产品,运营,UI,都是为了让想法变成现实,什么时候自己能成为不再为别人的想法服务的人,而是提出想法呢?有点跑题了。
android/iOS/flutter 三种技术写同一种 APP 本意是为了熟悉一下近来学习的 android 和 iOS,flutter 算是添头,写一下玩一玩。不过通过这次项目的编写,让我觉得其实很多的技术都是在做类似的事情,变化的只不过是 API。用 Icon,用 RN,用 FLutter,用 Android,用 IOS 都可以写出 APP 来,成为大前端,也就是掌握多种可以做同一个事情的技术,会一种和会多种只不过是谁记住了更多的 API。
最近在做一个移动端即时通讯的需求,读了一些技术博客,这些博客不是为了 Flutter 而写,他讲述的是客户端和服务器端整个的处理即时通讯的流程,客户端开启连接,心跳检测,创建本地数据库,服务端接收到消息再转发到客户端,等等。这让我觉得在业务开发上重要的其实不是语言或者技术,而是这种整体的,解决问题的思路,思路才是灵魂,语言和框架只不过是实现这种思路的工具。
工作已经两年了,感觉自己就是个 API boy,掌握了很多的 API,前端,客户端,服务端都写过,学过的语言都有七种了,以至于现在不是工作用到的技术,很多细节都想不起来了。可是这些 API 有多少是可以迁移的呢,过了几年有了新的语言,新的框架,所谓的编程经验也跟着清零。基于这种考虑,让我想到去学习计算机基础,学一学经久不衰的计算机科学,不能满足于学习 API。从技术投资的角度来讲,肯定是希望自己学习的技术永远不过时,现在来看只有计算机科学有这样的特性,准备学一学试一试。当我认识到我可能会从事十几年的计算机行业后,我觉得不能再为了面试而学习了,应该学一些真正的可以贯穿整个职业生涯的知识。
从资本的角度出发,不管跨平台写出来的 APP 有多烂,跨平台还是提高了员工生产力。从我自己的角度出发,我觉得跨平台也是一种很好的技术方案,本来都是做的类似的事情,何必要用那么多种语言,那么多种框架,当 Flutter web 正式版出了之后,我就放弃了 JS 技术栈的学习,学习多种技术做同一种东西在我看来毫无意义。即使 FLutter 不是终极方案,我觉得跨端是不会消失的,只要还有各种各样的端存在,跨端技术就会存在。
我觉得一名好的跨端工程师不只是掌握跨端技术,能够写端上的应用,也应该熟悉端的特性,能够解决对应端的特定问题。自己未来一年里,除去基础知识的学习外,也会朝着这个目标前进。未来的一年内,也会寻找机会为开源社区做出贡献。技术在我这里分两种,一种是应该学的技术,所谓应该学的技术就是市场需要什么样的技术人才,对应的就是就是应该学的技术。另一种是感兴趣的技术,感兴趣的技术就全凭自己的心意,想学点什么就学点什么。
这两年来多半是在学应该学的技术,很多想做的事情,感兴趣的技术都被排在后面了,现在想一想如果当初不是对 Flutter 产生了兴趣,自己也不会在这两年里取得这么大的进步。其实做正确的事情我只是全凭意志力在坚持,而做感兴趣的东西会让我感到快乐和兴奋,生活已经够艰难了,还是应该让自己快乐一些,接下来一两年的时间里,我决定多学习一些自己感兴趣的知识,做自己真正想做的事情。做正确的事情,取得世俗意义上的成功,对自己来说毫无意义。做自己想做的事情,成为自己想成为的人,才是最有意义的事情。人生还长着呢,如果这一两年发现做自己感兴趣的东西完全行不通,到时候再调整方向也来得及。
我虽然希望一年后的自己成功,但我更希望一年后的自己快乐。人生一辈子都追求正确,虽然能有一个好的结果,但是也会错过一些其他的风景,我决定去看看这些风景。
“我支持你,加油!”
版权声明: 本文为 InfoQ 作者【思想者杰克】的原创文章。
原文链接:【http://xie.infoq.cn/article/f6edbf208bb72e60b2f8d94bc】。文章转载请联系作者。
评论