Flutter基础到底重要嘛?-面试

261 阅读2分钟

JTBT科技-二面

1、Flutter中var、dynamic、object区别。

**var**:编译器推断类型,一旦赋值,类型就固定下来,不能再赋值为其他类型。
**dynamic**:动态类型,变量可以赋值为任何类型,没有类型检查,可能导致运行时错误。
**Object**:所有 Dart 类的基类,变量可以赋值为任何类型,但在使用时需要进行类型转换。

2、向StatefulWidget的Page页面传值,基于context,不基于构造函数和其他路由方式,会在StatefulWidget生命周期的那个函数里面收到值,为什么?

initState

用途:用于初始化状态。通常在这里进行一次性的初始化工作。

限制:在 initState 中不能直接访问 BuildContext,因为此时 Widget 树还没有完全构建完成。

didChangeDependencies

用途:在依赖的 InheritedWidget 发生变化时调用。可以在这里访问 BuildContext 并获取传递的值。
优势:可以安全地访问 BuildContext,因为此时 Widget 树已经构建完成。

3、StatefulWidget的生命周期。

StatefulWidget 的生命周期包括以下几个主要阶段和方法:

  1. 创建阶段

    • createState(): 创建并返回一个 State 对象。
  2. 初始化阶段

    • initState(): 在 State 对象被插入到树中时调用。通常用于一次性的初始化工作。
  3. 构建阶段

    • build(): 构建 Widget 树。每次需要更新 UI 时都会调用。
  4. 更新阶段

    • didChangeDependencies(): 在依赖的对象改变时调用。
    • didUpdateWidget(): 在 Widget 重新构建时调用。
  5. 销毁阶段

    • deactivate(): 在 State 对象从树中移除时调用。
    • dispose(): 在 State 对象永久性移除时调用。用于清理资源。

4、Mixin、extend、Implement区别,都使用先后顺序如何?

mixin 是一种在多个类之间共享代码的方式。它允许你将一组方法添加到多个类中,而不需要使用继承。mixin 通常用于代码复用。

extend 用于类的继承。它允许一个类继承另一个类,并获得其所有的属性和方法。子类可以重写父类的方法,并添加新的属性和方法。

implement 用于实现接口。它要求类实现接口中定义的所有方法。接口可以是一个抽象类或一个普通类。

extends -> mixins(with) -> implements

www.jianshu.com/p/9a98c05f5…

5、stream与Future区别和应用场景。