引言
之前帮助朋友开发一款 web 端的客户管理系统,详情可看:juejin.cn/post/755282…。由于最近正好在学习 APP 开发,正好朋友也有这样的需求,所以就顺水推舟直接搞起来。
项目背景
需求聊下来后,移动端迫切需要具备的功能包括简历总览、个人私有库、上传简历等功能,所以本次也只是初步完成了一个 demo,方便员工随时随地联系客户、录入客户信息。
技术栈开发工具选择
技术栈
移动端:Flutter
注:去年有学习过一段时间 uni-app,只能说为了兼容多端,uni-app 确实做了很多努力,但是从开发体验感上来说,uni-app 真的太难用,调试时间比开发时间还长。
其实对于我自己而言,就算有 AI 加持,我也知道很难做到全栈,结果就是全沾,但是这并不影响我去选择一款适合自己的跨端技术栈。web 端那一套,发展了这么多年,厉害的人确实能玩的很花,但是我对框架的要求看得懂,改得动,不要求有特别高的自由度,但是也不要一步一个坑,毕竟我也没有时间和精力再去深入学习某些框架。(话说前端啥时候能大一统啊!!!)
开发工具
移动端:Qoder、Trae
主要是为了对比两款 AI 编辑器哪款更好用。
实际体验下来都很不错,国内算是天花板级别了,去年到现在有一段时间没用,再次用起来,感觉真的发展迅猛,大厂还是舍得砸钱啊。
开发过程
开发过程没有用什么提示词模板,就是直接和 AI 对话,让 AI 根据自己的要求生成页面,从 flutter create 开始,一步步完成应用开发,到最后打包 APK 直接下载使用,直接看最终效果吧。
整体包含 6 个页面,splash 页、登录页(不需要注册,web 端注册)、 首页、私有库、简历库、我的。然后按 AI 说的,再用蒲公英平台,生成二维码,给朋友下载。其中花时间最多的还是在解决网络请求上,处理统一请求头、全局日志、网络状态检测、全局异常处理、Token 自动刷新,请求响应拦截等等,详细过程就不说了,基本上都是 AI 完成的,自己只做了一些微调。引入的三方依赖如下:
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.8
dio: ^5.9.2//网络
json_annotation: ^4.11.0//序列化
flutter_svg: ^2.0.7//svg 图片
encrypt: ^5.0.3//加密
flutter_secure_storage: ^10.0.0//存储
shared_preferences: ^2.5.5//存储
fluttertoast: ^9.0.0//通用弹框
flutter_launcher_icons: ^0.14.4//启动图标
都是一些很基础的包,基本上每个项目都会用到。
基础模板
在这个简单的应用开发完之后,又花了三四天的时间,基于原来的代码,封装一个更加完善的基础模板。当前的依赖包括:
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.8
dio: ^5.9.2
json_annotation: ^4.11.0
flutter_svg: ^2.0.7
encrypt: ^5.0.3
flutter_secure_storage: ^10.0.0
shared_preferences: ^2.5.5
flutter_launcher_icons: ^0.14.4
provider: ^6.1.5+1
go_router: ^14.1.0
flutter_screenutil: ^5.9.3
flutter_smart_dialog: ^5.1.0
cached_network_image: ^3.4.1
flutter_flavor: ^3.1.4
flutter_gen_runner: ^5.13.0+1
logger: ^2.7.0
permission_handler: ^12.0.1
package_info_plus: ^9.0.1
device_info_plus: ^12.4.0
flutter_native_splash: ^2.4.7
intl: ^0.20.2
connectivity_plus: ^7.1.1
fluttertoast: ^9.0.0
很多我都是觉得非常有必要的,比如flutter_screenutil:屏幕多尺寸适配,flutter_flavor:工程化 & 环境分离,flutter_native_splash:修复启动页白屏问题等等。除了外部依赖,还有些应用优化,比如日间、夜间主题,应用信息、设备信息获取,当然还有很多功能没集成,主要是我根据 AI 的输入,再结合自己可能的使用场景,抽取出的一套适合自己用的模板,项目开发有实际需求的话再集成也不晚。除了集成这些能力,代码上也做了一些封装,比如:
- 基类抽离:公共基类
- 常量统一:接口地址、颜色、字体、路由名、字符串全部常量化
- 示例页面:内置登录页、首页、404 页、网络请求示例、状态管理示例,直接参考开发
- 工具类独立:日志、存储、权限、格式化抽离为单例工具类
这是 github 地址:github.com/oubin17/odk…,基础能力也都跑通了。虽然比不上专业的 APP 开发模板,但是麻雀虽小,五脏俱全,而且没有复杂的嵌套关系,出现问题很容易定位。
模板页面
总结
AI正在彻底打破传统开发的高门槛,彻底改变了中小项目、轻量化需求的开发模式,也使一人公司成为可能,只要你有想法,有需求,即便没有深耕某一框架或领域,也能快速完成全栈项目、跨端项目的demo落地,甚至能快速打磨出可上线使用的版本。这对于个人接单、创业项目快速验证、新手入门开发来说,无疑是极大的助力,让编程不再是专业开发者的专属,普通开发者也能轻松实现想法落地。
面对页面搭建、通用工具类编写、基础网络封装、依赖配置这类重复性强、逻辑固定的工作,AI能大幅提升效率,甚至能帮我们规避基础问题、优化交互细节;但涉及复杂业务逻辑梳理、底层架构设计、疑难bug调试、个性化需求定制、代码质量把控等核心工作,依旧离不开开发者自身的判断与能力。
我们可以依赖AI提升效率,但不能盲目迷信AI、完全照搬AI代码,毕竟AI生成的内容仍需要人工微调、校验、适配实际业务,过度依赖只会丧失独立思考和问题排查的能力。
归根结底,AI只是提升效率的工具,开发者的核心竞争力,是对业务的理解、对技术的掌控力、独立解决问题的能力。但这些核心竞争力真的“核心”吗?AI 的进化速度超乎想象,我们认为的核心竞争力与 AI 之间的差距在慢慢变小。对大多数人,死磕底层、源码、算法已经是性价比极低的一件事。
或许多少年后,我们的孩子也会问我们,为什么当时 AI 那么火,怎么没有抓住风口。可问问我们自己,即使身处浪潮中,又有多少弄潮儿,能抓得住这风口呢?