处置后使用了提供程序-Multiprovider

时间:2019-11-17 01:05:50

标签: flutter dart flutter-provider

ProfileLogic的依赖项添加到LocationLogic后,在应用启动时出现以下错误:

  

I / flutter(14674):在处置后使用了LocationLogic。

     

I / flutter(14674):在LocationLogic上调用dispose()后,将无法再使用它。

这些是我的提供者:

      providers: [
        ChangeNotifierProvider(builder: (_) => ConnectivityLogic()),
        ChangeNotifierProxyProvider<ConnectivityLogic, ProfileLogic>(
          builder: (context, connectivity, previousMessages) =>
              ProfileLogic(connectivity.isOnline),
          initialBuilder: (BuildContext context) => ProfileLogic(false),
        ),
        ChangeNotifierProxyProvider<ProfileLogic, LocationLogic>(
          builder: (context, profileLogic, previousMessages) =>
              LocationLogic(profileLogic.profile),
          initialBuilder: (BuildContext context) => LocationLogic(null),
        ),
        ChangeNotifierProvider(builder: (_) => SignUpModel()),
        ChangeNotifierProxyProvider<ConnectivityLogic, WorkLogic>(
          builder: (context, connectivity, previousMessages) =>
              WorkLogic(connectivity.isOnline),
          initialBuilder: (BuildContext context) => WorkLogic(false),
        ),
        ChangeNotifierProvider(builder: (_) => OrderLogic()),
      ]

奇怪的是,即使有该错误,一切都可以正常工作。

1 个答案:

答案 0 :(得分:2)

我认为您处置了容纳这些提供程序的小部件。尝试将所需的提供程序移到树中的更高位置。因此,如果您有:

        MaterialApp(
          home: MultiProvider(
            providers: [...],
            child: child,
            )
        )

执行以下操作:

        MultiProvider(
          providers: [...],
          child: MaterialApp(
            home: child,
          )
        )

如果这不能帮助您,则需要提供更多上下文。例如。小部件树是什么样的。