avatar

目录
Flutter学习(2)stateful_widget

Flutter学习系列是自己学习Flutter的过程笔记

状态组件

组件分类:

  • StatelessWidget:无状态变更,UI静态固化的Widget, 页面渲染性能更高。
  • StatefulWidget:因状态变更可以导致UI变更的的Widget,涉及到数据渲染场景,都使用StatefulWidget。

在StatefulWidget里,因为要维护状态,他的生命周期比StatelessWidget更复杂,每次执行setState,都会触发 window.scheduleFrame() 导致整个页面的widget被刷新,性能就会降低。

代码示例

状态组件(继承自StatefulWidget),类中的实例变量就是state

dart
1
int num = 0;

方法中调用setState即可更新state,导致页面刷新

dart
1
2
3
4
5
onPressed: () {
setState(() {
this.num++;
});
},

demo

dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class MyStatefulPage extends StatefulWidget {
@override
_MyStatefulPageState createState() => _MyStatefulPageState();
}

class _MyStatefulPageState extends State<MyStatefulPage> {
// state
int num = 0;

@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
SizedBox(height: 200,),
Chip(
label: Text('${this.num}'),
),
SizedBox(height: 20,),
RaisedButton(
child: Text('按钮'),
onPressed: () {
// change state to refresh page
setState(() {
this.num++;
});
},
)
],
);
}
}

6.png

文章作者: 盛顺炎
文章链接: https://www.shengshunyan.xyz/2020/05/17/Flutter%E5%AD%A6%E4%B9%A0(2)stateful_widget/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 果实的技术分享
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论