美文网首页Flutter学习
Flutter携程APP总结

Flutter携程APP总结

作者: Yue_Q | 来源:发表于2019-07-20 16:03 被阅读0次

    功能展示

    image.png

    DAO 采坑

    1. Model设计

    1.1 简单Model实现
    添加成员变量,声明Dart可变构造函数,创建一个factory 的fromJson()方法转化为实体。
    1.2 复杂Model实现
    复杂Model的实现,在于成员变量是List<Model>,在fromJson()方法需要通过map((i) => CommonModel.fromJson(i)).toList()转化为List即可。

    小结
    1. 乱码处理:Utf8Decoder utf8decoder = Utf8Decoder();修复中文乱码问题。
    2.factory 关键字:我们在实现一个构造函数时使用factory关键字时,这个构造函数不会总是创建其类的新实例
    3.toJson() :当需要打印实体信息的时候需要写toJson()方法,将Model转化成Map对象即可。
    4.async与await:当遇到有需要延迟的运算(async)时,将其放入到延迟运算的队列(await)中去,把不需要延迟运算的部分先执行掉,最后再来处理延迟运算的部分。

    启动屏

    由于启动App的时候会加载FlutterSDK等会造成App有短暂的白屏时间,所以需要制作一个启动屏幕来掩盖白屏。

    • 通过runOnUiThread方法加载Dialog显示启动屏,最后通知主线程更新
    • 防止Activity内存泄漏使用软引用持有activty。
    • 在onCreat()方法中调用显示启动屏
    • 在Native中通过实现MethodCallHandler,在Flutter中关闭启动屏。

    自定义Widget

    WebView

    1. 防止用户多次点击WebView造成重复打开

    • initState()中,获得WebView的引用用来关闭,

    2. 监听WebView State状态判断是否是主页

    • 当State发生改变的时候判断URL是否是白名单中URL的结尾。如果是主页那么返回APP的上一层。
    • 需要设置exiting bool变量防止重复返回。(防止用户多次按返回键直接退出应用)

    3. dispose() 导致WebView中的Back键失效
    需要在,super.dipose() 之前关闭各个监听

    4. appBar加载策略

    • 判断hideAppBar,判断是否隐藏AppBar
    • 添加Padding,解决AppBar在系统栏
    • Stack布局包裹
    • AppBar的颜色,判断是否有背景颜色,无背景颜色设置为黑色。

    5. WebView布局加载

    • Expanded Wiget控件将WebView控件撑满剩下的空间。
    • initialChild属性显示加载页面

    打包

    • 开启混淆,减小APK大小
    • 选择App支持的架构
     ndk {
               abiFilters "arm64-v8a", "x86_64", "x86" // 只打包flutter所支持的架构
               //abiFilters "armeabi-v7a"// release
           }
    

    参考资料

    相关文章

      网友评论

        本文标题:Flutter携程APP总结

        本文链接:https://www.haomeiwen.com/subject/qzrphctx.html