Flutter 基础篇(二)—— Widget
写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于Flutter的学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的。
Widget 是一个抽象类,在 Dart 语言中,没有 interface 这个关键字,接口是通过抽象类来表示的。
先来看 Widget 的声明:
@immutable
abstract class Widget extends DiagnosticableTree {
const Widget({ this.key });
final Key key;
@protected
Element createElement();
@override
String toStringShort() {
return key == null ? ‘ r u n t i m e T y p e ′ : ′ runtimeType' : ' runtimeType′:′runtimeType-$key’;
}
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties.defaultDiagnosticsTreeStyle = DiagnosticsTreeStyle.dense;
}
static bool canUpdate(Widget oldWidget, Widget newWidget) {
return oldWidget.runtimeType == newWidget.runtimeType
&& oldWidget.key == newWidget.key;
}
}
-
Widget类继承了DiagnosticableTree(诊断树),主要作用是提供调式信息。 -
属性
key类似于React或Vue中的key,主要的作用是决定是否在下一次build时复用旧的widget,决定条件在canUpdate()中。 -
createElement():Flutter在构建UI树时,会先调用此方法生成对应节点的Element对象。该方法是Flutter隐式调用的,在开发过程我们很少会使用。 -
debugFillProperties():复写父类的方法,主要是设置诊断树的一些特性。 -
canUpdate():一个静态方法,它用于Widget树重新build时复用旧的widget,具体的说,是否用新的widget对象去更新旧UI树上所对应的Element。通过上面的源码发现,只有oldWidget与newWidget中的runtimeType和key都对应相等时,才会用newWidget更新Element对象的配置。
需要注意的是,我们一般不会直接继承 Widget 这个类,而是继承 StatelessWidget 或 StatefulWidget 来间接继承 Widget 。其中,前者表示无状态组件,后者表示有状态组件。
StatelessWidget 用于表示一个无状态的 Widget ,它继承自 Widget 类,重写了 createElement():
@override
StatelessElement createElement() => new StatelessElement(this);
StatelessWidget 用于不需要维护状态的场景,它通常在 build 方法中通过嵌套其他 Widget 来构建 UI ,在构建过程中会递归的构建其嵌套的 Widget。
StatefulWidget 用于表示一个有状态的 Widget,它继承自 Widget,并重写了 createElement(),此外,类中添加了一个新的接口 createState() :
abstract class StatefulWidget extends Widget {
const StatefulWidget({ Key key }) : super(key: key);
@override
StatefulElement createElement() => new StatefulElement(this);
@protected
State createState();
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
总结
写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于Flutter的学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。
由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的
还有高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
决问题。**
[外链图片转存中…(img-UtAKgoiy-1712754233471)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
更多推荐



所有评论(0)