之前没有接触过 dart 语言,因为学校有个课程安排是「给定数据和选题,限时完成一个 app 的实现」,不限具体技术,考虑到要跨平台基本上没什么好的选择就选了 flutter ,没有后端,只用了 firebase 做简单的数据源和 auth 。
具体需要做到以下的内容:
给定的时间是一周,然后做出来的效果大概是这样:
注册 /登入放在同一个界面,输入完邮箱后自动检测是否已经注册来判断接下来进入注册还是登入(感觉可以进一步完善,不过时间不足就没仔细设计了)
程序内部的界面大概是这样,这里我额外花了点时间改掉数据源和 UI 上的文字,用的是世界文化遗产的那个 open data 。
实际上作为课程要求给定的数据源比起世界文化遗产的 open data ,数据结构要混乱许多,也花了不少时间去处理 nullable 的情况。倒是 flutter 有类似 kotlin 的 null coalescing ,帮助减轻了不少处理负担。
carousel 、fab 、地图 api 还有大头钉,还有分享到第三方功能用的是第三方库来实现的。搜索框里面想到了用标签分隔关键词的想法,在 stackoverflow 上找到了一些代码片段,不过还是花了不少时间来适配,而且第一个片段有 bug 用不了,还好那个问答下有好几个方案所以最后还是弄出来了。用 fab 而不是抽屉因为感觉这样更方便,也更适合跨平台的场景。
ListView 的的溢出方面,因为一开始完全不懂,花了不少时间去处理错误然后慢慢也理解了该怎么 debug 一个 flutter 的 widget ,虽说现在还是不能很熟练的一次写出不溢出的 widget 就是了。
在架构上,虽然听说 flutter 并不是为 mvvm 设计的,不过还是专门花了一点时间基于 provider 来捏了个 mvvm 的骨架,感觉用 mvvm 的最直观的好处就是增添新功能或者改数据流的时候改起来很方便,可能是因为解耦合的原因。
大体上就是这样,然后作为课程小结的展示会上也看了别人的作品,似乎并没有做的更好的(比如说 fab 和基于标签的搜索就没人做出来)。
当然这边的学校并不是什么很出名的学校,其他的学生也没感觉很厉害,可能在国内好点的学校可以看到更好的作品吧。
所以也想问一下,大概在没学过 flutter 和 dart 的前提下,花一周时间做出这个玩意,能够赶得上国内正规学校大四学生的平均值嘛。
一个 typical 的大四学生做类似的项目,一周时间的话,大概需要做到什么样的效果呢(不限制具体使用什么技术栈)?
源代码就不发了,毕竟也不是什么很厉害的东西,也是为了避免出现隐私问题。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.