Flutter面试指南
1、Dart是什么?和Flutter是什么关系?
Dart是Google开发的一种面向对象的计算机编程语言,和Java类似
Flutter是Google开源的UI工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台
Dart是flutter的程序开发语言2。main()和runApp()函数在flutter的作用分别是什么?有什么关系吗?
main函数是类似于java语言的程序运行入口函数
runApp函数是渲染根widget树的函数
一般情况下runApp函数会在main函数里执行
3。什么是widget?在flutter里有几种类型的widget?分别有什么区别?能分别说一下生命周期吗?
Widget在flutter里基本是一些UI组件,和
在Flutter中,有两类常用的Widget:无状态的StatelessWidget有状态的StatefulWidget
在开发过程中,我们经常需要继承它们两来实现自己的Widget。A、无状态的StatelessWidget
如果你的控件一旦显示,就不需要再做任何的变更,那么你应该使用StatelessWidget。
实现一个自己的StatelessWidget很简单。
classPageWidgetextendsStatelessWidget{overrideWidgetbuild(BuildContextcontext){returnbuildBody(context);}WidgetbuildBody(BuildContextcontext){returnContainer();}B、有状态的StatefulWidget
它可以改变界面的状态,比如显示的文字Text、选中状态CheckBoxSwitch等
我们之所以可以改变状态是因为setState,当调用setState后,就会触发StatefulWidget的视图树重建。
4。HotRestart和HotReload有什么区别吗?
HotReload比HotRestart快,HotReload会编译我们文件里新加的代码并发送给dart虚拟机,dart会更新widgets来改变UI,而HotRestart会让dart虚拟机重新编译应用。另一方面也是因为这样,HotReload会保留之前的state,而HotRestart回你重置所有的state回到初始值。5。在flutter里streams是什么?有几种streams?有什么场景用到它?
Stream用来处理连续的异步操作,Stream是一个抽象类,用于表示一序列异步数据的源。它是一种产生连续事件的方式,可以生成数据事件或者错误事件,以及流程结束时的完成事件
Stream分单订阅流和广播流。6。简单说一下在flutter里async和await?
await的出现会把await之前和之后的代码分为两部分,await并不像字面意思所表示的程序运行到这里就阻塞了,而是立刻结束当前函数的执行并返回一个Future,函数内剩余代码通过调度异步执行。
async是和await搭配使用的,await只在async函数中出现。在async函数里可以没有await或者有多个await。7。steam
在Flutter中有两种处理异步操作的方式Future和Stream,Future用于处理单个异步操作,Stream用来处理连续的异步操作。Stream
a、Stream就是事件流或者管道,是一些的异步事件,它会在上一个事件完成时通知你进行下一个事件。
b、Stream无论用什么方式创建,都会以相同的方式返回并使用:asynchronousforloop(awaitfor)FutureintsumStream(Streamintstream)async{varsum0;awaitfor(varvalueintstream){sumvalue;}returnsum;}
c、Stream提供asynchronous序列化的数据。
d、该序列化数据包含了用户生成的时间和重文件中读取的数据。
e、你可以通过awaitfor的listen()来处理StreamAPI返回的数据流。
f、Stream提供了相应的处理方法。
g、Streams有两种方式:singlesubscription(订阅)和broadcast(广播)
stream跟changeNotifer区别
1。stream代表着时间了,通过stream可以快速地实现事件流驱动业务逻辑,界面通过订阅事件,针对事件转换最后通过响应事件完成页面布局,而在整个stream流过程中,离不开以下角色
streamController:管理调度整个事件流的流程,并保存整个事件流中所需要的对象,便于管理和使用
StreamSink:事件的开始入口,所有的同步异步事件都是从这里开始的,提供了add和addStream等方法
Steam:事件本身,可以被转换和监听,订阅后返回StreamSubscription对象
StreamSubscription:订阅steam后得到的对象,可以管理订阅过的各种操作,如cancle()、pause()
总结:stream的事件流就是:先创建steam,创建回调方法并订阅,在通过streamSink添加事件源,在订阅的过程中可以使用StreamSubscription管理这个订阅,最后回调steam订阅的回调方法
8。Dart中??与??的区别:
两者都是dart中的操作符,??表示如果为空则返回,??表示如果为空则赋值Stringa;Stringba??1;print(b);打印结果:1print(a);打印结果:nulla??2;print(a);打印结果:2
9。Flutter与原生通信的Channel有哪几种?
Flutter定义了三种不同类型的Channel,它们分别是:
BasicMessageChannel:用于传递字符串和半结构化的信息。
MethodChannel:用于传递方法调用(methodinvocation)。
EventChannel:用于数据流(eventstreams)的通信。
10。Flutter在Debug和Release下分别使用什么编译模式,有什么区别?
Debug模式下使用JIT编译模式,即Justintime(即时编译),Release下使用AOT模式,即Aheadoftime(提前编译)。JIT模式因为需要边运行边编译,所以会占用运行时内存,导致卡顿现象,但是有动态编译效果对于开发者来说非常方便调试。AOT模式提前编译不会占用运行时内存,相对来说运行流畅,但是会导致编译时间增加。
11。Flutter出现异常时如何友好的提示用户?
使用ErrorWidget。builder进行全局设置自定义界面即可。
游戏学习两全其美开学季就选这些高性能游戏本了新学期的开学季即将到来,又有大批新人即将跨入大学校门、继续深造。此时此刻,给自己选择一款优秀的笔记本是必要的,上网课、查资料、做作业都少不了,闲暇之余还可以跟同学组队打打游戏,……
电动三傻对比作为蔚来车主,小鹏,理想,TESLA都试驾了。长期看好小鹏,中短期看好蔚来,目前不看好理想小鹏前期虽然有商业挖角弄TESLA代码嫌疑,但是在辅助驾驶这块目前中国路况……
性价比代名词的realme和iQOO,哪家才是王者在三千元档的价位上,一直是realme和IQOO充当着性价比的名牌,不过自从realmeGT大师探索版发布以后,IQOOneo5的性价比地位就有点岌岌可危了,因为通过配置参数来……
华为手机屏幕不行?DxOMark手机屏幕排行榜华为P50Pr在手机屏幕领域,三星屏幕一直都是顶尖的存在,很多手机品牌厂商非常乐意采购并使用三星屏幕,就连苹果都对三星屏幕有所青睐。但国内的头部厂商华为就放弃使用三星屏幕,其中的原因有成本考……
新能源车行业趋势分析二(蔚小理迪一季度财报对比)随着一季度财报的披露,来看看蔚来、小鹏、理想、比亚迪四家新能源车头部企业的财报对比,看看从中能不能分析出一些不一样的东西。先看看2021年一季度的财报概况(金额单位都是人……
斗鱼虎牙合并被禁止,却成了龙珠的狂欢?8小时连发17条微博庆近日,斗鱼虎牙合并被禁止的消息,迅速成为直播行业乃至整个网络的热议话题,除了讨论事情本身之外,有不少网友发现,曾经濒临倒闭的龙珠直播,似乎因为这个消息彻底复活了。从公告披露开始……
苹果8P照相目前是国产手机的什么水平?秒杀一切安卓〔大笑〕这台手机拍照什么水平呢?我个人感觉还是不错的!先说缺点:直出JPG拍照涂抹比较明显导致细节缺失,自带相机不能调整各项拍摄参数,不能保存RAW数据。可以……
这群程序员中的广告狂人,把抖音广告做成了AR游戏在大部分人印象里,广告总是占据屏幕却平平无奇。但现在,广告也可以有丰富的玩法和有趣的互动,充满创新。比如,你在刷抖音的时候,有没有玩过这些AR互动广告?瞄准悬浮在空……
算法三种常见排序排序冒泡排序(BubbleSort)它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位……
抢招科技人才服务实体经济金融数字化转型积厚成势本报记者郭子源金融数字化转型正在从多点突破走向深入发展。观察陆续披露的上市银行2021年年报,有三个变化值得关注:一是银行愈发渴求科技人员,科技员工占比显著提升;二是银行……
宇航员进入太空中为什么要带枪?杨利伟在进入太空时,就携带了一把64式手枪。带枪上太空其实是航天领域的一项国际惯例,全世界所有进入太空的航天员都必须配枪。它到底用来做啥嘞?莫非是用来抵御外星生物,准备跟外星人……
外媒贝恩资本考虑向东芝提出收购中新经纬4月1日电据华尔街中文网1日报道,东芝最大股东有意愿将持有股份出手给美国私募股权集团贝恩资本,贝恩资本也提出希望与多方讨论,但暂未做决定。报道提到,东芝最大股东E……