本文记录于我完整开发完一个鸿蒙App后的学习笔记。
一、通用逻辑
1. 设计App的流程
- (1)先进行网络和存储接口的设计
- (2)再进行页面架构的搭建
- (3)再进行细化
2. 直达客户端应用开发入门的方法
只要你学的是客户端开发,那么就有一个快速的入门经典题目,你搞定了这个题目,那么你所在的新平台的开发已经实现入门了。
因为Flutter是跨平台的,场景更加复杂,所以我们就以Flutter为例,展开描述一下这个题目:
在工程里新增一个半屏 flutter list view,用自动布局实现,
里面还有 icon 是本地,加网络请求,View有对应的Model,
里面的内容是发网络请求获取的,
还有一部分是从 oc 原生代码获取的,还有一部分是从 db 获取的,
然后添加拖拽手势,然后松手之后有一个动画,
然后 A 可以打开 B,A 向 B 传参数,并响应 B 传回来的参数,然后 B 打开的是 C是原生,做的也是类似的事情。
这里面涉及的知识点:
flutter半屏、自动布局、网络请求、数据驱动、桥接原生、DB操作、响应动画、router传参。
二、鸿蒙特有的东西
1. 数据驱动
我认为 @State 是声明式编程的灵魂,无论是鸿蒙还是flutter,都通过@State实现数据的绑定。
- 双向绑定
什么时候需要双向绑定呢? 比如多个View都在共享同一个数据源,最常见的就是:
一个List对应一个数组装的数据源,然后List中的操作面板也需要数据源中的信息,那么这时候针对数据源要进行绑定。
@Link @Watch
3. 数据驱动,那理论上都是在操作data,怎么实现删除一个View呢?
这是我认为最好看的结构。
IDataSource 封装的数据源接口,在iOS开发中,如果在使用tableView时,你需要自己实现tableView的delete回调接口,
而IDataSource自动封装了这些能力。
4. 页面架构
- page
- view_0
- view_1
- model
- datasource
你可以看到我们这里的工程结构,样式我们使用Page封装View来实现,
然后定义Model和dataSource,当然这里我们没有封装网络层和数据库,
如果封装的话,新增DB和net层比较合理。
5. page之间的跳转
作为iOS开发,page之间传参是我最初非常难接受的。
在Android和鸿蒙中,page或者activity之间的传参,是通过一个单一的params进行传参的,
而要把数据返回给上一个层级时,需要上一个层级自己在onPageShow/aboutToAppear的时候从router中获取数据。