flutter面试

这篇博客详细介绍了Flutter面试中常见的问题,包括main()和runApp()的作用及关系、State生命周期、Stream的概念和应用场景、async和await的用法、Future与Stream的区别、Key的作用、Flutter与原生平台通信方式、热重载原理、Isolate的理解、状态管理框架、Dart的值传递特性、作用域、单线程模型、多任务并行实现、Future在异步编程中的应用、mixin机制、Flutter的架构理念、Engine与Framework层的功能、Widget、State和Context的概念,以及Flutter的渲染流程、线程管理模型和动画基础知识。
摘要由CSDN通过智能技术生成

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 树的重新绘制,因此可以保持改动前的状态,大大缩短了从代码修改到看到修改产生的变化之间所需要的时间。

另一方面,由于涉及到状态的保存与恢复,涉及状态兼容与状态初始化的场景,热重载是无法支持的,如改动前后 Widget 状态无法兼容、全局变量与静态属性的更改、main 方法里的更改、initState 方法里的更改、枚举和泛型的更改等。

可以发现,热重载提高了调试 UI 的效率,非常适合写界面样式这样需要反复查看修改效果的场景。但由于其状态保存的机制所限,热重载本身也有一些无法支持的边界。

9、怎么理解Isolate?

isolate是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值