若Flutter面试中让解释一下Flutter中的Widge,该如何回答?

92 阅读1分钟

在Flutter中Widget是构成用户界面的基本元素, Container 、Center、 Row 、 Column、Card、Wrap 、Stack、Padding、Flex这些都是Flutter内置的Widget。

我们也可以自定义Widget,继承StatelessWidget实现无状态组件,继承StatefulWidget实现有状态组件。

Widget可以分为两大类:

无状态(Stateless)Widget:这类Widget的属性是不可变的,它们不会随时间变化。例如,一个无状态的按钮,它的颜色、大小和文本等属性在生命周期中是固定的。

有状态(Stateful)Widget:这类Widget的属性是可以改变的,它们会随时间变化。例如,一个有状态的按钮,在用户点击后,它的颜色和文本可能会发生变化。有状态Widget在创建后可以发生变化,例如用户交互、网络请求或数据更改等。

Widget的生命周期:

创建:当需要显示一个Widget时,Flutter框架会调用其build方法来创建它。 更新:当一个有状态Widget的状态发生变化时,它的build方法会被再次调用,以便更新用户界面。 销毁:当一个Widget不再需要时,Flutter框架会调用其deactivate和dispose方法来销毁它。

Widget的树形结构:

在Flutter应用程序中,所有的Widget都会组成一棵树形结构,称为Widget树。Widget树的根节点通常是MaterialApp或CupertinoApp,然后依次是Scaffold、AppBar、ListView等。这种层次结构使得Flutter可以有效地管理和渲染复杂的用户界面。

源自:bbs.itying.com/topic/65efd… 关注学习更多Flutter面试知识点。