我想使用onGenerateRoute函数生成iOS(Cupertino路由):
onGenerateRoute: (settings) {
...
return CupertinoPageRoute(builder: (context) => SomePage(context), title: "SomeTitle");
...
}
现在标题(指定为“ SomeTitle”)是语言的依存关系,所以我需要这样获取它:
MyLocalizations.of(context).somePageTitle
但是,为此,我需要BuildContext
(上下文)。
我该怎么做?我可以将BuildContext
指定为每条路线的参数,但这不适用于初始路线(我错了吗?)。
在onGenerateRoute中获得BuildContext
的最佳方法是什么?
答案 0 :(得分:0)
AFAIK::没有其他方法可以在onGenerateRoute中获得BuildContext
。唯一的方法是作为参数(我们进入builder
的方式)。
替代方式
如果您查看CupertinoPageRoute
title
属性的文档
此路线的标题字符串。
用于自动填充[CupertinoNavigationBar]和 [CupertinoSliverNavigationBar]的
middle
/largeTitle
小部件 一个不是手动提供的。
因此,只有在您未在CupertinoPageRoute
或CupertinoNavigationBar
中提供中间小部件的情况下,您在CupertinoSliverNavigationBar
上提供的标题才会用作后备广告
因此,在您的情况下,也可以在其中明确设置所需的中间小部件和标题。
示例:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CupertinoNavigationBar(
middle: Text(MyLocalizations.of(context).somePageTitle),
),
body: Container(),//Body as you want
);
}