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,面试)