Flutter开发相比React-Native优势在哪里?高手为你答疑解惑!

移动开发领域变化太快,如今越来越多的跨平台移动开发框架问世,对原生的冲击越来越大。React-Native,weex等移动开发框架非常火热,却也都有不少问题,其中最让人不满意的就是性能问题了。但是,假如有一天性能问题解决了呢?那么移动开发界势必要受到很大的冲击!Google最近推出了开源、免费的全新开发框架Flutter1.0,可以快速在iOS、Android等多平台上构建高质量的原生用户界面,国内已有爱奇艺、闲鱼两个利用Flutter进行开发的案例,想必Flutter会是未来的前端开发趋势。

今天我们有幸邀请到亢少军老师和大家一起探讨Flutter相关问题。

嘉宾介绍:

亢少军  捷智云视频会议系统联合创始人,国内首本Flutter出版书籍作者,著有《Flutter技术入门与实战》。多年从事流媒体技术研发,对于 Android,iOS 等开发技术有比较深入的研究和应用,作为主要程序员开发了多个应用项目,涉及医疗、交通、银行等领域。

CSDN-blog:https://blog.csdn.net/kangshaojun888

Github:https://github.com/kangshaojun

 

Flutter开发相比React-Native优势在哪里?高手为你答疑解惑!_第1张图片

 亢少军

 

Q:请问Flutter的优势是什么?另外小白新手如何从入门到精通,学习路线向大佬请教一下。

A:优势就是性能好,跨平台。建议先学基础组件,因为flutter里有一个很重要的概念是:一切皆为组件。然后学习基本的页面布局,前后端网络数据请求,路由导航,手势,动画等知识。涉及到需要调用原生的功能,比如打开相机,蓝牙,获取电池电量等还需要学习flutter插件开发知识。

 

Q:flutter有什么非常大优点吗?你最感兴趣的是什么地方?你基于什么理由选择这个框架?和现有的框架有什么优势?除开是新技术外,我们为什么一定要学习它,有什么推荐的理由么?

A:我们是因为flutter性能高的原因,选择了flutter。并开源了一个flutter webrtc项目,因为我们团队是做音视频开发的,所以对性能要求很高。另外还有一个原因是是它酷炫的界面,很有动感,符合现代界面设计需要。还有一个最大的原因是可以flutter跨很多平台,macOS/windows/linux/android/iOS以及嵌入式,这大大减少了开发及维护的工作量。

 

Q:跟流行的React-native相比有什么区别?目前在国内流行吗?

A:个人觉得Flutter比RN做的更专业一些,运行流畅,有一种丝滑版的体验。还有开发调试上比RN的工具好用。RN调度过程中总是有一些莫名其妙的的问题。我是从adobe air --->cordova---> rn ---> Flutter一路走过来。目前国内在慢慢热起来了。

 

Q: Flutter最大的诟病是嵌套太多层的问题,有什么方式能够解决这个问题?

A:这个我一开始也觉得嵌套太多,不过合理拆分,写多了自然就不觉得乱了。比如:一个页面先从垂直方向拆分成几块,再从水平方向拆分。另外vscode及androidstudio可以在结束的位置有提示代码范围也方便。可以看我的博客一个一个学习组件:https://blog.csdn.net/kangshaojun888

 

Q:Flutter不是刚推出的么,生态还很欠缺,现在是否适合在生产环境进行推进?

A:阿里的闲鱼就是Flutter开发的商业应用,我有把rn的插件移植到Flutter上很快。可以看我的github上有两个插件就是rn移植过来的。https://github.com/kangshaojun

 

Q:现在有哪些比较知名的项目和公司使用了Flutter?

A:闲鱼和爱奇艺就是Flutter开发的 ,好多公司在flutter没有发布正式版本之前已经上架了很多app了。与原生的app、混合式app、web app相比可以查一下。

 

Q:目前打包的包体积有多大?效率比起原生怎么样?

A:打包的体积稍微大一些,helloworld这种大概有30m左右。性能不亚于原生。

 

Q:Flutter对iOS支持如何,能不能替代iOS原生开发?

A:可以开发iOS应用,甚至macOS桌面应用。个人认为可以替代。

 

Q:你好,我刚接触flutter不久,之前接触过react所以对flutter大体设计能有一定的理解,但是对build中的BuildContext感觉把握不准,这个参数在flutter是一种什么概念,结构又该怎样理解?感谢指教。

A:BuildContext抽象类,它表示一个控件在整个控件树中的位置句柄,每个控件都有自己的BuildContext实例。 某些静态函数(例如Theme.of等)也有BuildContext实例,以便它们可以代表调用控件或专门针对给定上下文获取数据。

 

Q:flutter和目前的react native(基于react)、weex(基于vue)、native script(基于angular)的底层运行有什么区别,是不是也是通过dart封装底层api,方便上层调用。另外,现在js很火,dart和js相比有哪些优缺点,为什么要学习一门新的编程语言和框架,有什么优势?

A:关于对比引用一段话:Flutter吸收了cordova及rn的教训之后,在渲染技术上,选择了自己实现(GDI),由于有更好的可控性,使用了新的语言Dart,避免了RN的那种通过桥接器与Javascript通讯导致效率低下的问题,所以在性能方面比RN更高一筹。个人觉得Dart简单易用,即有脚本语言的易用特性,又有高级语言的强大功能。

 

Q:亢老师,请问 Flutter 与 ReactNative 比较,有哪些优势和差异,在技术入门学习成本和开发组件的丰富方面目前是怎样的状态?谢谢!

A:组件已经很丰富了,能满足大部分的应用场景,唯一需要做的是,有特定需求需要开发插件,类似rn plugincorodva plugin。技术的学习成本不高,dart语言容易上手。建议可以尝试一下。

 

Q:Flutter使用dart语言,对未来发展前景如何看待?

A:Flutter火可能Dart会比较火,类似人工智能及Python。

 

Q:你好,有没有 flutter 音视频相关的项目案例?

A:可以关注我们团队的flutter webrtc项目:https://github.com/cloudwebrtc/flutter-webrtc

 

Q:这个开发算不算原生呢,有没有解决支付还其他图片下载等成熟的控件

A:不是原生开发,支付的插件现在github上已经有了

 

Q:关于对android和iOS的兼容性问题,有什么需要注意的?

A:基本上写一套界面,在两个平台上展现一致,我遇到过iPhoneX下底部显示被遮挡的问题。

 

Q:Flutter和weex这样的类前端语法相比难度会不会偏大?

 A:把嵌套这一关过了,还是容易上手的。

 

Q:您好,请问使用这个学习成本高吗?开发速度快吗?对比原生开发是否会无法使用某些原生功能API?

A:只是界面开发的话学习成功不高,难点在于插件开发,需要学习dart与java/oc的交互。开发快速,需要原生功能的话,写插件即可。

 

Q:其实现在的跨平台开发还是Qt c++那套比较实用,性能可以保证,很多游戏前端都是c++跨,UI并不高深。不知道这个flutter性能和持久性如何?

A:win是dart + c++, macOS是dart + oc,性能自然有保障,性能能达到60fps。QT个人觉得相比较于flutter开发太慢,组件也麻烦。

 

Q:请老师介绍几个比较好用的Flutter UI库

A:自带的Material Design的组件就是最好的UI库。

 

Q:请问老师,Flutter对自定义组件的开发友好度怎么样?谢谢

A:比较方便,继承StatelessWidget/StatefulWidget然后重写Widget build(BuildContext context)方法,即可自定义组件。

 

Q:你好,我看了几个性能的测评贴,包括rn,原生,flutter,但是发现不同的博主给出的结论竟然截然相反,让我非常的差异,有没有比较官方的性能比较?由于带环境,安装包大小最为诟病,未来有可能精简么?谢谢

A:底层渲染都是基于skia C++ 的2D绘图引擎,调用GPU来完成渲染。性能不可能差的。默认打包出来的尺寸30m左右,个人觉得不算大。

 Q: 我是做金融类APP的,用flutter的话目前有个问题,基本我们接入的各个第三方服务的厂商都没有flutter的插件,如果说我们把原来服务厂商提供的安卓和IOS插件拿过来封装成flutter插件的话,能做吗?封装难度如何?

A:您好。理论上是可以做的,新建一个集成的插件,然后在底层做一些接口的适配即可完成厂商的对接。

 

Q:flutter的原理和我最初设想的跨平台方案一样,就是用view来绘制控件,这样能最大程度发挥性能,但也意味着要有很长的路要走,请问现在安卓平台和ios平台用flutter开发的话,需要调用原生的东西多不多?另外除了学习Dart语言外还有什么周边的东西需要学习的吗? 

A:调用原生的程序,根据应用求而定,比如需要打开手机摄像头就需要。flutter学习主要是要熟悉dart语法,还有各种组件的使用。可以看我的博客https://blog.csdn.net/kangshaojun888/里面有大量组件的使用示例。

 

Q:亢老师,我比较关心flutter 与国内一些第三方的集成,比如微信、微博登录和分享,微信、支付宝支付、以及百度地图或是高德地图。在国内开发应用少不了这些集成,是否有成熟的插件可以使用,如果没有应该如何与这些第三方的Native SDK 做集成?成本如何?谢谢。

A:有一些集成已经有了,比如支付相关。第三方集成的项目正在增长。想做集成需要开发flutter插件,上手容易,个人认为成本不高。只需要做dart与native的衔接即可。如何编写插件可以了解一下我的github开源项目 https://github.com/kangshaojun。或者看这篇文章http://flutter100.net/docs/plugin_battery_manager.html

 

本期的问答就到这里了,如果您还有问题想要和亢老师交流可以在文章评论留言!

本期活动感谢开源中国-高手问答栏目提供平台,原地址:https://www.oschina.net/question/2720166_2302950

 

另外,由亢少军老师编写的国内首本Flutter相关书籍,《Flutter技术入门与实战》现已上线!从实战角度讲解Flutter,从基础组件到综合案例,从工具使用到插件开发,包含大量精选案例和详细实操步骤,还有配套视频课程可帮助读者快速入门。

Flutter开发相比React-Native优势在哪里?高手为你答疑解惑!_第2张图片

点击图片购买

Flutter开发相比React-Native优势在哪里?高手为你答疑解惑!_第3张图片

传播计算机知识、互动分享,华章与您共同进步!

长按二维码关注

↓↓↓点击左下方阅读原文了解更多开发专题图书

你可能感兴趣的:(编程语言,java,人工智能,dart,移动开发)