【发布时间】:2019-01-02 12:21:13
【问题描述】:
我正在使用 Flutter 创建移动应用程序。 此应用程序有两种形式(屏幕)。 例如:
class MainScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AdvertAppBar(context),
body: Container(…),
),
);
}
}
和
class ListScreen extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AdvertAppBar(context),
body: Container(…),
),
);
}
}
如您所见,我正在使用从外部类 (AdvertAppBar) 实例化的共享 appBar。
有什么方法可以从 appBar 类中知道父对象的类是什么(MainScreen 或 ListScreen)?
【问题讨论】:
-
您可以使用inheritedWidgetOfExactType 方法执行此操作,但如果您只是将数据传递到您的
AdvertAppBar类中可能会更好。你到底想达到什么目的? -
你有没有 context.widget.runtimeType
-
@JordanDavies 从 MainScreen 我想调用 ListScreen
(Navigator.push(context, MaterialPageRoute(builder: (context) => ListScreen()),);),但从ListScreen我只想刷新ListScreen的内容。是的,我可以将一些参数(比如当前表单名称)传递给 AdvertAppBar 构造函数,但我认为有更合适的方法吗? -
从我从你的问题中了解到的是,你试图只加载你的
ListView小部件的内容而不重新加载你的appBar对吗?