原来的代码
class ContextRoute extends StatelessWidget {const ContextRoute();@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Context测试"),),body: Container(child: Builder(builder: (context) {// 在 widget 树中向上查找最近的父级`Scaffold` widgetScaffold scaffold = context.findAncestorWidgetOfExactType<Scaffold>();// 直接返回 AppBar的title, 此处实际上是Text("Context测试")return (scaffold.appBar as AppBar).title;}),),);}
}
修改后的
class ContextRoute extends StatelessWidget {const ContextRoute();@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Context测试"),),body: Container(child: Builder(builder: (context) {// 在 widget 树中向上查找最近的父级`Scaffold` widgetScaffold scaffold = context.findAncestorWidgetOfExactType<Scaffold>() as Scaffold;// 直接返回 AppBar的title, 此处实际上是Text("Context测试")return (scaffold.appBar as AppBar).title;}),),);}
}
在Scaffold scaffold = context.findAncestorWidgetOfExactType
参考了这里