我有些困惑。假设我有一个有状态的小部件,需要获取一些数据。文档指出,不建议在build方法中使用它,因此我将其放在initState
中。已记录在here中。
我还从此处的文档示例中实现了命名路由,这些路由是使用无状态小部件完成的。 Article reference here。
当我尝试访问路由参数initState
时会引发错误。该错误专门引发在ModelRoute调用上。
@override
void initState() {
super.initState();
TownDetailPageArguments args = ModalRoute.of(context).settings.arguments;
}
[] 3
如果该代码被移至build方法,则可以正常工作。
所以,我的问题是,建议使用什么方法来访问用于在有状态小部件中获取数据的路由参数?
答案 0 :(得分:0)
在context
方法中没有initState
可用,为了使用of
方法必须通过。您应该改为使用类似的方法didChangeDependencies
,该方法可以访问context
。两者之间的差异可以在here上找到。
用法示例(与initState
相同,稍后再调用):
@override
void didChangeDependencies() {
super.didChangeDependencies();
TownDetailPageArguments args = ModalRoute.of(context).settings.arguments;
}