当前位置:   article > 正文

flutter overlay_Flutter 自学记录8

flutter overlay release

【核心:蚂蚁搬家,项目新阶段】

  又过去了两周,这可能是我在学习Flutter过程中最艰难的时刻。这十天,我好像蚂蚁搬家一样,一块砖,一块砖把Flutter中需要的东西补全。

   上上周我把AES,RSA加密同我们的测试服务器调通了,因此我的网络层已经基本是到位。拿到后端加密数据,就该是转换JSON到Model了,在这个过程中,我发现Dart的类型转换非常严格,如果声明String,给了int值直接报错。为此为封装了SafeInt,SafeString,SafeDouble,SafeBool,这些在Object-c当时字典,数据使用我们也自己wrap包裹一下,免得空指针。

   在wrap加固基本数据类型,之后我才有了最基本的FromJson,ToJson模式手动的解析,以前写Object-c项目也是自己做JSON字符串Map到Model的手动解析。只有后来的Swift,有了handJson这样的框架,语言更灵活,让我们可以享受更好的序列化。可惜Dart的语言和Java一样很生硬,而且没有运行时,没有反射,无法封装好的序列化组件。

    在结合Dio库,封装了全局Result对象,我封装了全局Service类,再封装了每个业务自己的Handle,三者之间传递的是Future,API是写在Handle里面。

   单例Dio manager对象->Sevice加密解密,URL过滤拦截->Handle API
请求,参数配置-> pagebind 页面获取model

   可以说这个模式我是Swift项目的架构,我把它用到了这里,可以非常好的层次管理和依赖,不同service对象可以每次自己生成不同密钥。

   经过这个网络层序列化,我对dart有了实践和锤炼,更了解和熟悉这个门语言,写代码使用Stream,future有了 更多体会和经验。重点就是异步,多个异步怎么处理,其实精通了Rxswift这都是一样的obsever思想,很受用。

    之后我封装了launch页面,就是app启动之后,首先进入这个节目,通常就是广告加载页面。这个页面我给它更多的功能,我看成APP的门神。在这里我会判断网络状态和权限,如果没有网络和权限,我会直接弹出提示框引导用户去开启网络。如果网络状态正常,但是后端配置数据没有获取到,我也会弹出对话框,让用户刷新。现在有些功能和配置数据,后端动态配置少不了,所以必须前置有这么一个守护者。或者我在这里加载本地缓存数据库数据,也需要一点时间。我会把各种必要的事情做为才进行业务,如果执行时间超过5秒,我就展示一个HUD loading,告诉用户我在加载东西。如果后天配置了强制升级,就在这里直接拦截。经验告诉我,有了这个launch启动页,会稳定以及好用很多。如果一起正常是登录状态,那么用户不会感受到这个启动页,直接进入首页。

    开发了launch页面之后,我需要HUD的这样的全局loading控件,在Pub.dev找了很多,没有直接可以,而且我们loading是自定义的界面。我需要一个全局单例,随时dismissed,随时show,不冲突。我本来想利用官方dialogue 封装,但是发现这个dialogue方法以来context上下文,而且dismiss方法是调用Navgitaor.pop 这样如果乱用会不可控。在分析了OKtoast库,我看了它的源码实现,我在main程序启动入口也插入自己的HudLoading控件,结合overlay我实现了想要的单例随时调用展示或者隐藏。

  再接下来,我需要再项目中封装数据库和keychain。因为我体会了coredata的爽,数据库不使用,那真的是不应该。在比较了很多库之后,我选择了sqFile这个库,在自己二次封装之后,我完成了创建版本升级表,插入数据,更新数据,删除数据的基本方法。另外我创建了一个KeychainManger封装了getUUID函数,使用keychain库在app启动的时候创建一个UUID来做为唯一识别。这部分我也一点点测试和封装完成。

  再再接下来,我把版本升级强制和非强制Toast对话框进行了封装和适配,感觉写UI真实最简单和轻松的,Flutter容器及自适应你熟悉Flex布局,或者你熟悉iOS的uisatckview那么就so easy。我都熟悉,而且我打开官方一周widget教学的73个视频,我都看了,现在如果需要使用哪一个直接看一下视频就知道哪一个contianer和组件最适合。

   最后的最后,之前额项目是Flutter_autolayout,现在我需要把它的名字改成FastPay我们的项目名称,我把iOS,android的工程全部icon,identify名称,版本号,启动页logo,权限申请都修改完成。我还测试了一下flutter run --release 安装的包启动速度如何。因为我发现debug模式,打开app实在太慢了,不过release模式喜出望外,效果很满意。

   完成以上的工作,日子就到了今天。真的好难,此处的难是是需要沉下心一点点去理解细节,一点点去把想要的东西实现出来。我当然知道我能想到这些都可以做出来,但是如果不是上班,以上的工作量我在家可以估计需要一个月时间。但是上班那就是最高效,最专注的干活,既要快还要做的让自己觉得质量到位,满意,在当前可以使用可以达到要求的东西。

    这可能就是我自己的风格,如今我可以看懂各种高深的源码和代码。因此我封装现在Flutter项目,我不会放过任何细节,每一个模块有什么隐藏bug或者黑洞,我一定不会放过,去弄清楚。为了功能为了快速,为了搞两下就一劳永逸,我觉得这肯定不靠谱。当然遇到一些需要花时间弄的更清楚,更深入的,我也会记下来,等之后在深究,如果它目前不会带来问题或者隐患。比如的现在的AES和RSA加密库,现在跑起来Ok,但是之后我还要看一下底层的实现,异步,看的封装依赖,这关系最低版本的支持,也关系将来升级的隐患。当你跑项目看到提示依赖的API以及deprecated那么你就要记住这个信息,IDE给的提示都要认真思考。

    煎熬的度过两周之后,我进入新的后续步骤,现在我开始写项目的界面开发了。首先是从登录注册,首页,写每个页面的model解析,写页面Viewmodel绑定,写各种业务逻辑,配置Handle的API。满满的我的工程就变得和其他Flutter项目一样花里胡哨,各自功能和界面。其实这部分真的是最简单和复制的,也是不会让你有更多底层技术提升的东西。

  之前我封装的,切换黑暗模式,换色彩皮肤,换字体,换语言,我只完成了一半,把他们的代码写上了,但是逻辑没有写完,部分封装不够好。但是我后面没有继续去做,因为完善他们只是时间问题,如果做好已经有数。

   写着写着感觉Flutter不会让我快乐了,但是现在到写页面的工序,感觉如此的简单,适配多个机型,多个平台如此的丝滑,让我觉得对自己说,以后写APP只拿Flutter来写。

   有些朋友微信咨询我,问我怎么也,我想说目前的iOS平台,苹果SwiftUI本质和Flutter一样,以后客户端和PC端开发不会再有现在UIKit和mac APPKit两套SDK,一定是一套节目布局就是自适应了全部的平台。所以,将来SwiftUI一定是兼容iOS和Mac的。所以如果你只开发苹果生态的APP,那么学习swift+swiftUI就是当前必须的技术栈。我相信以后一定会告别使用纯代码布局的开发时代。一定是react, vue, combine,observe,前端思维的开发模式。

  而我现在选择Flutter,可以说就是走在当前最伟大的变革的路上,我也不知道会遇到哪些困难,运行效果怎么样。等我把目前的Flutter项目脚手架封装好,把项目从swift和kottlin原生迁移到flutter的时候,我才知道有那么问题。这大概需要半年时间吧,反正这正是当前我的目标和努力的方向。

     等我完成了Flutter项目的迁移,我会把google官方android开发指导文档看一遍,了解更多的细节和知识。我相信,精通Flutter之后我就是一名全栈开发工程师,能写iOS,当然可以把android端搞定。解决了平台兼容问题,希望可以有更多时间学习其他的知识,补充更多知识,把移动端开发看成一种开发,而不再是分平台,分角色。之后我可以给公司开发window,mac版本应用。

   以上的前提是我当然要精通Flutter。当然,我目前我也有很多不清楚,必须时刻翻阅官方资料,找答案。但是度过了这个难熬的阶段,锤炼了自己万物都是object,万物都是widget的认识,现在开始写界面和功能了。

   路漫漫其修远兮,吾将上下而求索。未来的2-3年,我会不断的学习flutter,关注这个生态和跟上它的迭代。我相信Flutter可以给我带来更多的快乐的惊喜,想想以前iOS写界面,真实苦不堪言,感谢Google,感谢技术变革,解放了我们,解放了我们的时间。移动开发不会再是枯燥的,不会局限一个端,现在的移动端开发者,将会在所有平台上写应用。这不是不可能,Java SDK做到了,Flutter也即将做到。

   估计下一次更新记录,是我们Flutter版本上线的时候吧。如果你想学习英语,还想了解更多Flutter开发,随时联系我微信 stackview

   另外,没有熬夜看新版苹果Mac air,Mac pro的发布会,但是我周末看完了。苹果给的M1芯片,新产品主要目的我想是解决三端,iphone,ipad,mac os应用共享的问题。你可以看到macos的app就那么一点点,为什么?因为macos的开发者太少了,而且macos的APPKit和UIKit两套SDK脱节,两边都精通需要时间和功夫的。现在Xcode一套代码可以bulid三端运行的项目,结合SwiftUI,将来iOS开发者都可以写mac os,ipad ios程序。这样的生产和创造力,不知道会带来什么变革。

  我想这就是苹果公司的期待和自我挑战,只有战胜自己才能,战胜过去的自我体现了human精神。苹果能这样不断挑战自己,把自己看成对手,需要欣赏和尊敬这样的科技公司。来骗,来忽悠,暴发户,出卖良知这样的公司也很多。

   终于换了新手机,纠结比较了很久,最后选择了iphone 12 min,magesafe,20 w充电头,官方壳。很多买iphone 12 pro真的如果一些朋友所说,买iphone 12 没有啥子变强,买iphone12pro来满足真正升级的满意感。我在实体店体验了全部机型,没有玩游戏,看视频,也不刷微博,刷帖子的需求,min对我来说最舒服,Pro max 屏幕再大也没有什么东西体验提升。min电池小,之后估计有电池夹。

2fe20461050076f39f5e050e8f825434.png

57f5afd5e94e6c6433155daaab67ff6a.png

d2d4c18094ad1da3c8aa31f49d18bb74.png

60da0b90065235a21a8bfc9c965384c1.png

5133f422ef4f1dfd70a96acd32612e04.png

c15beaa13dce6da20d0b065da8ec606a.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/736458
推荐阅读
相关标签
  

闽ICP备14008679号