带有BuildContext的onGenerateRoute抖动

时间:2019-11-13 15:04:02

标签: flutter

我想使用onGenerateRoute函数生成iOS(Cupertino路由):

onGenerateRoute: (settings) {
  ...
  return CupertinoPageRoute(builder: (context) => SomePage(context), title: "SomeTitle");
  ...
}

现在标题(指定为“ SomeTitle”)是语言的依存关系,所以我需要这样获取它:

MyLocalizations.of(context).somePageTitle

但是,为此,我需要BuildContext(上下文)。

我该怎么做?我可以将BuildContext指定为每条路线的参数,但这不适用于初始路线(我错了吗?)。

在onGenerateRoute中获得BuildContext的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

AFAIK::没有其他方法可以在onGenerateRoute中获得BuildContext。唯一的方法是作为参数(我们进入builder的方式)。


替代方式

如果您查看CupertinoPageRoute title属性的文档

  

此路线的标题字符串。

     

用于自动填充[CupertinoNavigationBar]和   [CupertinoSliverNavigationBar]的middle / largeTitle小部件   一个不是手动提供的。

因此,只有在您未在CupertinoPageRouteCupertinoNavigationBar中提供中间小部件的情况下,您在CupertinoSliverNavigationBar上提供的标题才会用作后备广告

因此,在您的情况下,也可以在其中明确设置所需的中间小部件和标题。

示例:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: CupertinoNavigationBar(
        middle: Text(MyLocalizations.of(context).somePageTitle),
      ),
      body: Container(),//Body as you want
    );
  }