两个重要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("搜索"))