当我推送另一个屏幕时如何在 Flutter 中正确重用 Provider

How to properly reuse a Provider in Flutter when i push another screen

我遇到的问题与此 中描述的完全相同,但我想在推送屏幕中重复使用该提供程序。例如:如果我有 ChangeNotifierProvider 包裹 screenA,然后我使用 Navigator.of(context).push... 从 screenA 推送到 screenB,我想访问 screenB 上的提供者而不必传递它作为论据。上个问题的回答我做不到

解决方案:将提供程序移动到 MaterialApp 上方,之后您可以从应用程序的屏幕 A、B、C 等访问提供程序,而无需将其作为参数传递

void main() => runApp(
  ChangeNotifierProvider(
    create: (_) => YourProvider(),
    child: MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData.light(),
      home: Home()
    ),
  ),
);