Flutter使用心得(基础篇)

鄙人iOS开发攻城狮一枚,因公司发展需求,2019年7月开始自学Flutter,于2019年11月学成并开发一款类似百度云盘APP并上架AppStore和GooglePay,开发期间的辛酸和痛苦只有自己知道,总体来说,痛并快乐着,以下是使用Flutter开发的一些基础心得,分享给即将步入Flutter坑的攻城狮们。

基础概念介绍:
Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flutter还使用 Native引擎渲染视图,这无疑能为用户提供良好的体验

Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。2018年12月5日发布正式版本1.0。

Flutter使用Dart语言开发,dart语言是由谷歌公司开发的网络编程语言,于2011年10月10日发布一种面向对象的语言,包含面向对象语言的基本特征(继承、封装、多态)。

Flutter的核心宗旨,万物皆Widget,相比较原生iOS/Android,Flutter把所有对象全部看成Widget,比如基础UI控件、手势、文本、图片、按钮、动画、渲染等等

Flutter IDE:Android Studio / VSCode

项目常见问题:
针对问题:
1)flutter开发中常见功能的解决,比如权限,导航,推送等等一般app开发中常用到的功能。

1.权限问题,第三方插件
2.导航路由使用:1.简单的路由类 2.命名路由 3.自定义路由
3.推送:iOS使用原生APNS通知、Android使用FireBase推送
4.flutter的listview是不支持拖动排序的,需要支持列表拖动排序需要用ReorderableListView

2)碰到的问题以及如何解决的,比如推送过来点击无法跳到通知详细

1.在收到通知点击跳转详情页时,没有Context上下文对象,无法使用push跳转至详情页
使用EventBus解决问题,新建Base类,Base监听接收通知,需要跳转的页面继承Base

2.相册图片和视频开始没有在一个页面内,是因为Flutter的插件太多,没有选择正确的插件使用

3.在列表有缩略图的时候,使用State刷新整个页面的时候,会有图片闪烁的问题出现
使用GlobalKey,封装想要刷新的控件,然后实现局部刷新

4.Flutter不支持操作本地文件的复制和粘贴功能
原生代码实现功能,flutter通过channel调用原生方法实现

5.相册插件的国际化语言问题
调用相册的插件把页面语言构造写死了,如果想要实现插件中的国际化语言支持,就得修改插件中的方法,可能存在每次更新插件,可能会导致修改部分失效

6.做两个项目统合的时候,Android遇到分享栏里面存在两个app问题?

7.切换本地语言后,调用api传参时,语言对应的参数变更问题?

8.本地图片发生变化后,刷新页面无效果
需要重写 本地图片清除缓存并加载新图,判断新图片文件和旧图片文件size是否一致

9.选择插件一定要慎重,部分插件细节问题较难处理和修改
上传相册中断网,调用隐藏loading,loading无法取消问题
进入下个页面loading正在加载时,调用隐藏loading无效果
上传多张图片时,插件内部写定单位为个,想调整为进度条无法实现
调用隐藏按钮角标时可能存在不隐藏状况,需重写隐藏角标方法

10.本地文件,在Android的文件管理器中可以自行修改,会导致app内本地文件丢失

3)相对于原生开发的优缺点。

Flutter优点:
    1.支持热重载功能,编译更快
    2.跨平台,高性能(基于DOM树渲染原生组件),一套Source,多平台使用,缩短开发周期,性能相比原生相差不大,比weex和RN要好,尤   其是在动画和列表滑动的时候
    3.编码相对简单,上手难度较低,
    4.开发出的app相对其他跨平台开发(WEEX、react native、webApp)更流畅、性能更好
    5.敏捷开发,相比较原生,有很多插件支持,一行调用代码即可实现功能
    6.类型安全,Dart是类型安全的语言,支持静态类型检测,编译前发现一些类型的错误
    
Flutter缺点:
    1.底层开发支持相对不够完善(本地文件IO操作、状态栏的监听修改、相机相册等)
    2.Native相比Flutter性能更优、CPU占用较多
    3.Flutter包比原生包内存更大
    4.支持的第三方工具,第三方框架相对较少
    5.不能独立运行,更多内部实现依赖原生,上手需要了解基本原生
    6.widget类型较多,目前已知200+,全部了解需要耗费大量时间
    7.提倡控件的组合而不是继承,无法重写View实现自己需要的自定义效果,只能通过多个View组合实现
    8.部分解决方案依赖梯子,国内开发资源相对比国外少
    9.Dart语言是嵌套式语言,多层嵌套会代码结构比较凌乱
    10.有一些优化缺陷,类似于在input输入框中选中文字时,Android剪切粘贴菜单可能会像素溢出的问题,iOS可能存在点击其他input  会把之前input的内容自动带下来

4)目前flutter的最新情况。
目前最新flutter版本1.12.13。Dart语言版本2.7.0
Samba集成版本1.7.8
SaWaKaMi集成版本1.9.1
Flutter从1.9版本开始稳定支持flutter on web、支持 macOS Catalina 和 iOS 13、引入全新的 Material 风格小部件、新增国际化支持24中国际语言、默认开发语言Swift、Kotlin,flutter on web暂时不稳定,不建议直接使用

5)flutter项目常用第三方(推荐使用:官方插件,相对稳定插件)
# WebView: flutter_webview_plugin
# 提示框: fluttertoast
# 本地存储: shared_preferences#
# 获取沙盒路径:path_provider
# 生成二维码: qr_flutter
# 网络请求: dio http
# 相机相册: image_picker
# 相册多选: multi_image_picker
# 获取设备信息: device_info
# 本地数据库: objectdb
# 获取App信息: package_info
# 判断网络状态: connectivity
# 保存图片到本地: image_gallery_saver
# 权限请求: permission_handler
# Google身份验证:firebase_auth: ^0.11.1+8
# 推送: firebase_messaging
# 分享: esys_flutter_share
# 视频播放器: video_player

参考文献:
flutter中国官方:https://flutterchina.club/

flutter中文网:https://book.flutterchina.club/

flutter官方文档:https://flutterchina.club/get-started/install/

flutter插件:https://pub.dev/

github地址:https://github.com/flutter/flutter

flutter更换语言:https://juejin.im/post/5de720676fb9a0160823573a

flutter打包iOS:https://www.jianshu.com/p/f88c57403ba4

Flutter打包Android:https://flutterchina.club/android-release/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容