Flutter中Widget分为StatefulWidget和StatelessWidget,分别为动态视图和静态视图,视图的更新需要调用StatefulWidget的setState方法,这会遍历调用子Widget的build方法。当一个主页面比较复杂时,会包含多个widget,如果直接调用setState,会遍历所有子Widget的build,这是非常不必要的性能开销,有没有单独刷新指定Widget的方式呢?这个时候就要用到GlobalKey了。
常规刷新Widget的方法
一个StatefulWidget包含一个Button,一个Text,通过点击Button调用主Widget的setState方法,刷新Text,示例如下:
3041564298371_.pic_hd.jpg
import 'package:flutter/material.dart';
class TestWidget extends StatefulWidget {
@override
State createState() {
return _TestWidgetState();
}
}
class _TestWidgetState extends State {
int _count;
@override
Widget build(BuildContext context) {
return Center(
child: Column(
c