提供跨路线但在 MaterialApp 之后

Provider across routes but after MaterialApp

我有一个 class 需要访问 MaterialApp context,但它也需要从所有路由进行全局访问。

要创建全局提供程序,我可以用 Provider 包装 MaterialApp,但这样的提供程序无法访问 context。因此,我必须在 MaterialApp 之后提供 class。

我知道我可以用提供程序包装每条路由,因为它是无状态的,但我想知道是否有更好的方法。

提前致谢!

您可以将 material 应用程序包装在构建器中以获得对全新上下文的访问权限。

您可以使用 builderonGenerateRouteMaterialApp

MaterialApp(
  builder: (context, child) {
    return Provider.value(
       value: // TO-DO use context
      child: child, 
    );
  }
)