# Widget

_MyStatefulWidgetState 类可以通过使用 widget.{变量名称} 来访问被存储在 MyStatefulWidget 中的任何变量。在该示例中为:widget.color

https://juejin.im/post/5c768ad2f265da2dce1f535c

widget的主要工作是提供一个build()方法来描述如何构建UI界面(通常是通过组合、拼装其它基础widget)。

build方法放在State中

# 变量

永远不变、共用的,才在 Class static 变量声名

实例变量,可以在 Class 声明,在 initState 中进行初始化。

# GlobalKey

# 1. 解决duplicate GlobalKey detected in widget tree问题

initState里,更新一个 GlobalKey

static GlobalKey<RecordPageState> recoardKey = GlobalKey();

static setRecoardKey() {
  recoardKey = GlobalKey();
}

# 2.外部刷新页面

if (ModalRoute.of(Global.recoardKey.currentContext).isCurrent) {
  // 立刻刷新
  Global.recoardKey.currentState.refreshPage(true);
} else {
  // 下次 show 时刷新
  Provider.of<ApplyChange>(Global.navigatorKey.currentContext, listen: false).isReloadRecord = true;
}

# 3. 打开全局弹窗

void _openAddEntryDialog() {
  Navigator.of(context).push(new MaterialPageRoute<Null>(
      builder: (BuildContext context) {
        return new AddEntryDialog();
      },
    fullscreenDialog: true
  ));
}
Last Updated: 5/14/2022, 11:38:45 AM