statefullwidget和statelesswidget是flutter中组件布局的基础
statelesswidget顾名思义就是一个无状态的widget,可以在其中创建控件,但是不可以改变其中控件的状态。
statefullwidget其中可以添加状态需要改变的widget布局,自定义一个statefullwidget需要自称自statefullwidget,并在其build方法中创建自己的布局。
以下案例为创建一个可以点击的按键在布局中。
class Stfulwidget extends StatefulWidget {
@override
MybuttonPage createState() {
return new MybuttonPage();
}
}
//自定义mybuttonpage的widget 继承自stfulwidget状态的widget
class MybuttonPage extends State<Stfulwidget> {
//定义需要显示的String的list
List<String> list = ["这", "是", "flutter","官方",'demo'];
//定义原本显示的String字符串
String string = "hello world";
//定义初始位置
int i=0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: new Text('my button page'),
backgroundColor: Colors.red,
),
body: new Container(
child: new Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(string),
Padding(padding: EdgeInsets.all(10)),
new RaisedButton(
color: Colors.yellow,
onPressed: Action, //按钮的点击事件
child: new Text('点我'), //按钮内部的widget
),
],
),
),
),
);
}
//点击事件
/**
* 1 点击之后显示指定i位置的list的item
* 2 i++
* 3 if i=list的length时候 i=0
*/
void Action() {
setState(() {
if(i<list.length){
string = list[i];
i++;
if(i==list.length){
i=0;
}
}
});
}
}