在前端数据的变化界面的更新是必不可少的。不是一成不变的。
而在flutter中StatelessWidget通常用来展示哪些数据固定不变的,如果数据会发生改变,我们使用StatefulWidget;比如默认的界面是加减的动态变化。我们来学习一下加减的简单变化,一步一步的认识StatefulWidget。
1.首先贴代码
main(List<String> args) {
runApp(Myapp());
}
class Myapp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("demo"),
),
body: MyCounWidget(),
),
);
}
}
class MyCounWidget extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyCounState();
}
}
class MyCounState extends State<MyCounWidget>{
int counter = 0;
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget> [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
color: Colors.blue,
child: Text("+1", style: TextStyle(fontSize: 18, color: Colors.white),),
onPressed: (){
setState(() {
counter++;
});
}),
RaisedButton(
color: Colors.redAccent,
child: Text("-1", style: TextStyle(fontSize: 18, color: Colors.white),),
onPressed: (){
setState(() {
counter--;
});
})
],
),
Text("展示计数:$counter", style: TextStyle(fontSize: 30),),
],
),
);
}
}
创建MyCounWidget 继承StatefulWidget,将创建的MyCounState返回。State主要是保存状态。纪录当前的状态。
2,在MyCounState中用到了row,RaisedButton小部件。
扩展:Column和Row:
Column 垂直方向布局时
Row 水平方向布局时
RaiseButton 可以创建一个按钮,并且其中有一个onPress属性是传入一个回调函数,当按钮点击时被回调;(可以理解认为触发事件)例如:
在点击加减的时候界面是不会发生改变而这个时候在回调中加上
setState(() {
counter++;
});
可以理解为,发生改变,重新构建界面中的Widget;setState方法起作用。
最简单的一个更改完成。笔记,勿喷。