文章目录
-
-
- 1、Dart 当中的 「…」表示什么意思?
- 2、Dart 的作用域
- 3、Dart 是不是单线程模型?是如何运行的?
- 4、 说一下 Future?
- 5、说一下 Stream?
- 6、说一下 mixin?
- 7、StatefulWidget 的生命周期
- 8、 Flutter 如何与 Android iOS 通信?
- 9、dart是什么,和flutter有什么关系?
- 10、main()和runApp()函数在flutter的作用分别是什么?有什么关系吗?
- 11、什么是widget? 在flutter里有几种类型的widget?分别有什么区别?能分别说一下生命周期吗?
- 12、Hot Restart 和 Hot Reload 有什么区别吗?
- 13、在flutter里streams是什么?有几种streams?有什么场景用到它?
- 14、简单说一下在flutter里async和await?
- 15、future 和steam有什么不一样?
- 16、什么是flutter里的key? 有什么用?
- 17、在什么场景下使用profile mode?
- 18、怎么做到只在debug mode运行代码?
- 19、怎么理解Isolate?
- 20、await for 如何使用?
- 21、请简单介绍下Flutter框架,以及它的优缺点?
- 22、介绍下Flutter的理念架构
- 23、介绍下FFlutter的FrameWork层和Engine层,以及它们的作用
- *24、介绍下Widget、State、Context 概念
- *25、简述Widgets、RenderObjects 和 Elements的关系
- 26、简述Flutter的绘制流程
- 27、Dart中var与dynamic的区别
- 28、const和final的区别
- 29、Dart中??与??=的区别
- *30、Widget、Element、RenderObject三者之间的关系
- 31、Flutter在Debug和Release下分别使用什么编译模式,有什么区别?
- 32、Flutter 是什么?
- 33、Flutter 特性有哪些?
- 34、Flutter 和 Dart的关系是什么?
- 35、dart的一些重要概念?
- 36、dart是值传递还是引用传递?
- 37、 mixin extends implement 之间的关系?
- 38、Flutter main future mirotask 的执行顺序?
- 39、Future和Isolate有什么区别?
- 40、Stream 两种订阅模式?
- 41、Flutter state生命周期方法之didChangeDependencies 、didUpdateWidget
- 42、flutter key的种类
-
1、Dart 当中的 「…」表示什么意思?
Dart 当中的 「…」意思是 「级联操作符」,为了方便配置而使用。
「…」和「.」不同的是 调用「…」后返回的相当于是 this,而「.」返回的则是该方法返回的值 。
2、Dart 的作用域
Dart 没有 「public」「private」等关键字,默认就是公开的,私有变量使用 下划线 _开头。
3、Dart 是不是单线程模型?是如何运行的?
Dart 是单线程模型,如何运行的看这张图:
引用《Flutter中文网》里的话:
Dart 在单线程中是以消息循环机制来运行的,其中包含两个任务队列,一个是“微任务队列” microtask queue,另一个叫做“事件队列” event queue。
入口函数 main() 执行完后,消息循环机制便启动了。首先会按照先进先出的顺序逐个执行微任务队列中的任务,当所有微任务队列执行完后便开始执行事件队列中的任务,事件任务执行完毕后再去执行微任务,如此循环往复,生生不息。
4、 说一下 Future?
Future,字面意思「未来」,是用来处理异步的工具。
刚才也说过:
Dart 在单线程中是以消息循环机制来运行的,其中包含两个任务队列,一个是“微任务队列” microtask queue,另一个叫做“事件队列” event queue。
Future 默认情况下其实就是往「事件队列」里插入一个事件,当有空余时间的时候就去执行,当执行完毕后会回调 Future.then(v) 方法。
而我们也可以通过使用 Future.microtask 方法来向 「微任务队列」中插入一个任务,这样就会提高他执行的效率。
因为在 Dart 每一个 isolate 当中,执行优先级为 : Main > MicroTask > EventQueue
5、说一下 Stream?
Stream 和 Feature 一样,都是用来处理异步的工具。
但是 Stream 和 Feature 不同的地方是 Stream 可以接收多个异步结果,而Feature 只有一个。
Stream 的创建可以使用 Stream.fromFuture,也可以使用 StreamController 来创建和控制。
还有一个注意点是:普通的 Stream 只可以有一个订阅者,如果想要多订阅的话,要使用 asBroadcastStream()。
6、说一下 mixin?
首先mixin是一个定义类的关键字。直译出来是混入,混合的意思 Dart为了支持多重继承,引入了mixin关键字,它最大的特殊处在于: mixin定义的类不能有构造方法,这样可以避免继承多个类而产生的父类构造方法冲突。
7、StatefulWidget 的生命周期
- initState():Widget 初始化当前 State,在当前方法中是不能获取到 Context 的,如想获取,可以试试 Future.delayed()
- didChangeDependencies():在 initState() 后调用,State对象依赖关系发生变化的时候也会调用。
- deactivate():当 State 被暂时从视图树中移除时会调用这个方法,页面切换时也会调用该方法,和Android里的 onPause 差不多。
- dispose():Widget 销毁时调用。
- didUpdateWidget:Widget 状态发生变化的时候调用。

8、 Flutter 如何与 Android iOS 通信?
Flutter 通过 PlatformChannel 与原生进行交互,其中 PlatformChannel 分为三种:
- BasicMessageChannel:用于传递字符串和半结构化的信息。
- MethodChannel:用于传递方法调用。Flutter主动调用Native的方法,并获取相应的返回值。
- EventChannel:用于数据流(event streams)的通信。
9、dart是什么,和flutter有什么关系?
dart是一种面向对象语言,dart是flutter的程序开发语言。
10、main()和runApp()函数在flutter的作用分别是什么?有什么关系吗?
- main函数是类似于java语言的程序运行入口函数
- runApp函数是渲染根widget树的函数
- 一般情况下runApp函数会在main函数里执行
11、什么是widget? 在flutter里有几种类型的widget?分别有什么区别?能分别说一下生命周期吗?
widget在flutter里基本是一些UI组件有两种类型的widget,分别是statefulWidget 和 statelessWidget两种,statelessWidget不会自己重新构建自己,但是statefulWidget会
12、Hot Restart 和 Hot Reload 有什么区别吗?
Hot Reload比Hot Restart快,Hot Reload会编译我们文件里新加的代码并发送给dart虚拟机,dart会更新widgets来改变UI,而Hot Restart会让dart 虚拟机重新编译应用。另一方面也是因为这样, Hot Reload会保留之前的state&