当前位置:   article > 正文

flutter面试_flutter面试题

flutter面试题

1、main()和runApp()函数在flutter的作用分别是什么?有什么关系吗?

  • main函数是类似于java语言的程序运行入口函数
  • runApp函数是渲染根widget树的函数
  • 一般情况下runApp函数会在main函数里执行

 2.flutter中state生命周期与app生命周期与路由监听

flutter中state生命周期与app生命周期与路由监听_ailinghao的博客-CSDN博客_flutter didchangeapplifecyclestate

3、在flutter里streams是什么?有几种streams?有什么场景用到它?

  • Stream 用来处理连续的异步操作,Stream 是一个抽象类,用于表示一系列异步数据的源。它是一种产生连续事件的方式,可以生成数据事件或者错误事件,以及流结束时的完成事件
  • Stream 分单订阅流和广播流。
  • 网络状态的监控

4、简单说一下在flutter里async和await?

  • await的出现会把await之前和之后的代码分为两部分,await并不像字面意思所表示的程序运行到这里就阻塞了,而是立刻结束当前函数的执行并返回一个Future,函数内剩余代码通过调度异步执行。
  • async是和await搭配使用的,await只在async函数中出现。在async 函数里可以没有await或者有多个await。

5、future 和steam有什么不一样?

在 Flutter 中有两种处理异步操作的方式 Future 和 Stream,Future 用于处理单个异步操作,Stream 用来处理连续的异步操作。

6、 什么是flutter里的key? 有什么用?

  • key是Widgets,Elements和SemanticsNodes的标识符。
  • key有LocalKey 和 GlobalKey两种。
  • LocalKey 如果要修改集合中的控件的顺序或数量,分为valuekey和uniquekey;GlobalKey允许 Widget 在应用中的任何位置更改父级而不会丢失 State。

7、Flutter 是如何与原生Android、iOS进行通信的?

Flutter 通过 PlatformChannel 与原生进行交互,其中 PlatformChannel 分为三种:

  • BasicMessageChannel :用于传递字符串和半结构化的信息,(双向有返回值)。
  • MethodChannel :用于传递方法调用(method invocation),(双向有返回值)。
  • EventChannel : 用于数据流(event streams)的通信。仅支持数据单向传递,无返回值)。

同时 Platform Channel 并非是线程安全的

flutter和原生交互_ailinghao的博客-CSDN博客_flutter 和原生交互

8、简述Flutter 的热重载

Flutter 的热重载是基于 JIT 编译模式的代码增量同步。由于 JIT 属于动态编译,能够将 Dart 代码编译成生成中间代码,让 Dart VM 在运行时解释执行,因此可以通过动态更新中间代码实现增量同步。

热重载的流程可以分为 5 步,包括:扫描工程改动、增量编译、推送更新、代码合并、Widget 重建。Flutter 在接收到代码变更后,并不会让 App 重新启动执行,而只会触发 Widget 树的重新绘制,因此可以保持改动前的状态,大大缩短了从代码修改到看到修改产生的变化之间所需要的时间。

另一方面,由于涉及到状态的保存与恢复,涉及状态兼容与状态初始化的场景,热重载是无法支持的࿰

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/572872
推荐阅读
相关标签
  

闽ICP备14008679号