自己写flutter也有段时间了,这次来聊聊flutter开发App和原生iOS开发App各有什么优缺点.
成都创新互联专注于企业营销型网站建设、网站重做改版、阳新网站定制设计、自适应品牌网站建设、H5建站、电子商务商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为阳新等各大城市提供网站开发制作服务。
不废话,直奔主题????
面试资料分享:资料内容包括逆向安防、算法、架构设计、Swift、多线程,网络进阶,还有底层、音视频、Flutter等等
根本就是两个词。
简明英汉词典
flutter
[ˈflʌtə]
vi.
飘动
The coloured flags are fluttering in the breeze.
彩旗在微风中飘扬。
(心)快速跳动
His heart fluttered with excitement.
他因激动而心跳得厉害。
vt. vi.
振翼, 拍翅膀
The bird fluttered its wings in the cage.
小鸟在笼子里拍动翅膀。
n.
紧张, 激动不安
现代英汉综合大辞典
flutter
[ˈflʌtə]
vi.
振翅, 拍翅, 鼓翼
飘动, 飘扬
颤动; (心脏)急剧跳动; (脉博)浮动; 发抖
心绪不宁, 坐立不安
The wounded bird fluttered to the ground.
那个受伤的鸟拍着翅膀落到地上。
The curtains were fluttering in the breeze.
窗帘在微风中飘动。
He fluttered about the room nervously.
他焦躁地在屋里转来转去。
词性变化
flutter
[ˈflʌtə]
vt.
振(翅), 拍(翅); 使飘动, 使摆动
烦扰, 使焦躁
The bird fluttered its wings.
鸟拍翅膀。
flutter
[ˈflʌtə]
n.
振翅; 飘动, 飘扬
烦躁, 不安; 波动
(身体部分的)病态阵跳
颤振
电视图象颤动;【无】放音失真; [pl.]干扰雷达的锡箔
[美俚]投机; 小赌; (仪表、服装)过分讲究
The news caused a flutter among the teaching staff.
这个消息在全体教师中引起了不安。
简明英汉词典
flatter
[ˈflætə]
vt.
向…奉承; 阿谀
You flatter me immensely!
你太恭维我了!
给以愉快的感觉
The music flattered his ears.
这音乐使他听得很愉快。
现代英汉综合大辞典
flatter
[ˈflætə]
vt.
奉承, 谄媚, 吹捧
使高兴
(画像等的形象)美于(实物); 妄想
He flattered her on her cooking.
他奉承她做饭好。
The portrait flatters her.
这幅画像比她本人美。
She feels flattered by your invitation.
受你的邀请, 她觉得非常荣幸。
flap和flutter 都有鸟拍翅飞翔的意思前者move quickly 后者move lightly 以上都是做动词
此外 flap在英英中表示行为上的令人惊讶及神经 flutter 有表示人熟睡时眼睑的轻动,人紧张时心胃不舒服,还有一个女士向男士施展魅力时的抛媚眼
使用的不同。
相比来说ruffle的使用更加的方便简单,不需要过多复杂的使用技巧,使用更加的方便快捷。
如果我们目前的项目是Android的,但是接下来我们希望部分页面可以使用Flutter进行开发,甚至我们希望在Native页面中嵌入FlutterUI组件,那么我们该如何实现呢?
假设你现在Android项目的目录的结构是这样的
这时候如果你想创建一个Flutter模块,使得Android模块和Flutter模块之间可以进行交互,我们可以通过Android Studio新建一个Flutter Module,具体过程是:File — New — New Module ,之后选择Flutter Module,指定Project Location的路径为
也就是说,最终你的项目结构会是这样的
接下来在Android Module的 build.gradle 文件中添加flutter依赖
先创建一个Flutter页面
这里比较重要的是 window.defaultRouteName 这个字段,这个字段可以接收从Native传递过来的参数 (下文我们会介绍原生传递参数的方法),也就是说通过这个字段我们就可以进行Flutter页面的路由的分发
我们可以直接在Android的 MainActivity 中启动一个 FlutterActivity ,这里的 initialRoute 方法中传递的参数就对应Flutter层的 window.defaultRouteName
注意:需要在 AndroidManifest.xml 注册 FlutterActivity
自己创建一个 FlutterAppActivity 继承自 FlutterActivity
在 MainActivity 中启动 FlutterAppActivity (另外别忘了在 AndroidManifest.xml 中注册 FlutterAppActivity )
两种启动方式的区别
如果单纯只是想打开一个Flutter页面,两种方式实际上基本没有太大区别,第一种方式也许还会更简单一点。但是,在Flutter开发中,我们往往还需要开发一些Native插件供Flutter调用,如果使用复写 FlutterActivity 的方式更有利于我们在 FlutterActivity 中注册我们的Native插件,所以实际开发中一般推荐使用第二种方式
扩展思考
initialRoute 从名称上看起来是Flutter提供给我们进行Native与Flutter交互的路由跳转的,但是实际上他就是一个字符串,我们不仅仅可以传递一个路由名称,有时候我们也可以通过这个参数传递一串JSON数据,然后在Flutter端进行解析,这样我们就可以通过这个参数做更多的事情
activity_main.xml
FrameLayout 用于承载Flutter组件
MainActivity.java
使用 FragmentManager 将 FlutterFragment 添加到 FrameLayout 容器中
运行结果
上半部分是原生的TextView,下半部分是Flutter的Text组件
本节主要介绍了Native和Flutter之间的页面跳转,以及同一个页面中Native与Flutter组件的组合。接下来会介绍如何编写Android插件与Flutter进行数据交互
为了利用debug工具,大多数程序猿开发的时候使用AS的debug版本,最终发布版本是release版本,但是在这个转变的过程中可能会出现一些意外。
1、releas版本与debug版本的applicationId不一样
为了客户端上两个版本共存,通常debug设置不同applicationId,这会导致需要填写applicationId申请的第三方平台使用不正常,比如小米推送和微信分享等。
2、混淆问题: 一般情况下,debug版本的混淆是关闭的,release版本是打开的
这个坑我是多次涉入。
(1)使用Gson或者FastGson 转换Json字符后提供给某些类使用,比如Adapter。Release版本发现列表不能正常显示,结果是因为混淆的时候没有keep相关的Entity类。
(2) 使用反射,利用类名调起类时,注意keep该类,防止混淆。
使用案例: Switch 分支很多,导致代码很长,阅读困难。因此把switch的String作为类名, 使用反射调起。有新的情况时,只需要增加新类,不需要看以前的分支,也不用放在一个类里面。