两个重要Widget
StatelessWidget:
1、无状态widget,内容不可变,这意味着它们的属性不能改变——所有的值都是最终的。
2、如果无状态Widget里面有子Widget,并且子Widget是有状态的,则子Widget的内容是可以通过setState来更改的。无状态Widget影响的仅仅是自己是无状态的,不回影响他的父Widget和子Widget。
StatefulWidget:
1、有状态widget,内容可变,Stateful?widgets 持有的状态可能在widget生命周期中发生变化。
2、创建一个有状态的widget需要进行以下操作:
????????要创建一个自定义有状态widget,需创建两个类:StatefulWidget和State。
????????我们要定义一个widget类,继承自StatefulWidget。
????????子State,包含该widget状态并定义该widget build()方法的类,它继承自State。
????????状态对象包含widget的状态和build() 方法。
????????当widget的状态改变时,状态对象调用setState(),告诉框架重绘widget
页面跳转:
Navigator.of(context).pushNamed(“your page routeName”);
常用控件介绍:
Scaffold:脚手架
Text:文本框
ElevatedButton:按钮
Container:容器,具有边距,居中,靠左,靠右显示的属性
Column:竖向排列的一个显示控件,类似于横向的linerlayout
Row:横向排列的一个控件,类似于竖向的linerlayout
Expanded:一般用在Row中,占满一行剩余长度
Icon:图标,使用后示例:Icon(Icons.arrow_back,)
TextField:编辑框,Android中的edittext
Stack:事件穿透,widget层叠,类似于Android中的relativelayout
scaffold使用示例:
Scaffold(
appBar: AppBar(
title: Text("蓝牙"),
leading: IconButton(
icon: Icon(Icons.arrow_back,),
onPressed: (){
Navigator.of(context).pop();
},
),
),
body: “显示内容各种控件都可以放,最层只能是一个Widget”,
)
ElevatedButton使用示例:
ElevatedButton(onPressed: (){//此处处理点击事件}, child: Text("搜索"))
|