从子窗口小部件访问提供程序的问题

时间:2020-07-07 16:49:49

标签: flutter flutter-dependencies provider

从子窗口小部件访问提供程序类时遇到问题。

这是我的Main.dart文件。

...
home: MultiProvider(
        providers: [
          Provider<UserProvider>(
            create: (context) => UserProvider(),
          ),
          Provider<InvetoryProvider>(
            create: (context) => InvetoryProvider(),
          ),
        ],
        child: StreamBuilder(
          stream: FirebaseAuth.instance.onAuthStateChanged,
          builder: (context, userSnapshot) {
            if (userSnapshot.hasData) return LoadingWidget(userSnapshot);
            return Login();
          },
        ),
      ),
...

我在main.dart中初始化了InvetoryProvider类,我想在MyInventoryScreen中访问它。我的小部件树有些东西看起来像这样。

-MaterialApp 
 -LoadingScreen
  -HomeScreen
   -MyUsersScreen
   -MyInventoryScreen
 -LoginScreen

我尝试访问MyInventoryScreen中的InventoryProvider,但这显示了巨大的错误。

 var inventoryProvider = Provider.of<InvetoryProvider>(context);

是否有可能与Provider一起深入渗透?如果包装MyInventoryScreen,则可以正常工作。

1 个答案:

答案 0 :(得分:0)

如果您希望在应用程序的所有屏幕上都可以访问提供程序,则需要将该提供程序放在MaterialApp小部件上方。