技术题:
一、【初级】偏向使用--必须掌握
- dart传参的基本方式 (abc(a) abc(a,{a}) abc(a,[a]))
- var和dynamic的区别
Dart
会自推导出数据类型,var
实际上是编译期的“语法糖”。dynamic
表示动态类型, 被编译后,实际是一个object
类型,在编译期间不进行任何的类型检查,而是在运行期进行类型检查。 - final与const区别
const 值必须在编译时知道,初始化后无法改,final 值必须在运行时知道,初始化后无法更改 - ?、??、??=三者的区别
??=,如果变量没有赋值才进行赋值,否则不进行赋值 - Flutter 中的生命周期
initState→ didChangeDependencies→ build→ deactivate→ dispose
didUpdateWidge - 生命周期场景
Widget A打开Widget B: 调用 Navigator.push(B) 生命周期如何调用
B构造函数--->B initState--->B didChangeDependencies--->B build--->A deactivate--->A didChangeDependencies.
Widget B退出: Navigator.pop
A deactivate--->A didChangeDependencies--->A build--->B deactivate--->B dispose
-
为什么有 Mixin解决了什么问题,有没有应用场景
mixin: 定义了功能模块。
on: 限定了功能模块的使用类型。
with: 负责功能模块的组合。 -
Widget、Element、RenderObject三者之间的关系
Widget不是真正渲染UI的对象,它只是Element的一个配置描述,去告知Element应该如何去渲染,Widget 和 Element 之间是 ⼀对多的关系 。
RenderObject才是实际渲染的对象,Element 持有 RenderObject 和 Widget。
⼤致总结三者的关系是:配置⽂件 Widget ⽣成了 Element,⽽后创建 RenderObject 关联到 Element 的内部 renderObject 对象上,最后Flutter 通过 RenderObject 数据来布局和绘制。 - StatelessWidget和StatefulWidget的区别,举例说明Flutter自带的组件那些是StatelessWidget哪些是StatefulWidget
- 父组件调用子组件方法 / 子组件调用父组件的方法
GlobalKey/callBac