固定错误:如何解决返回类型'StreamController <ConnectivityStatus>'不是'Stream',如匿名关闭错误所定义

时间:2019-09-19 14:43:41

标签: flutter status mobile-application connectivity

我正在按照以下教程了解基于Internet连接的连接状态。

链接:https://www.filledstacks.com/post/make-your-flutter-app-network-aware-using-provider-and-connectivity-status/

现在的问题是,那么我正在尝试实现代码。在我使用StreamProvider的过程的最后,在构建器中,我得到以下错误:

错误:返回类型'StreamController'不是匿名闭包定义的'Stream'。

代码如下: main.dart

@override
  Widget build(BuildContext context) {
      return StreamProvider(
        builder:  (context) => ConnectivityService().connectionStatusController, // ERROR LINE
        child: ChangeNotifierProvider<ThemeChanger>(
          builder: (_) => ThemeChanger((x) ? ThemeChanger.customDarkTheme : ThemeChanger.customLightTheme),
          child: new MaterialAppWithTheme(),
        ),
      );
  }
}

用作者的git代码完全替换我的类型代码,链接如下: https://github.com/FilledStacks/flutter-tutorials/tree/master/011-network-sensitive-ui/

我尝试了Google搜索,但没有用到我的案例。我的代码出了什么问题?是因为我正在使用其他提供商吗?


由于自我发现而发现的解决方案得到了更新


@override
  Widget build(BuildContext context) {
      return StreamProvider(
        builder:  (context) => ConnectivityService().connectionStatusController.stream, // add .stream at end
        child: ChangeNotifierProvider<ThemeChanger>(
          builder: (_) => ThemeChanger((x) ? ThemeChanger.customDarkTheme : ThemeChanger.customLightTheme),
          child: new MaterialAppWithTheme(),
        ),
      );
  }
}

我认为它们是从本教程发布以来对软件包的更新,因此,当我浏览大量文章时,我选择了一个关键字流控制器,对其进行了RND,然后移至Stream Provider并做了一些关于此的更多RND以及执行此操作时看到的其他教程中的“沉没”和“流”,但由于本教程的缘故,我在代码和效率方面都遥遥领先。我只是在句号和结尾添加了流!问题解决了。

我希望人们能够找到适合其应用程序的解决方案:)

2 个答案:

答案 0 :(得分:4)

仅供参考:从Provider包的v3.x.0迁移到v4.0.0的步骤删除了provider的参数builder和initialBuilder。

之前:StreamProvider(builder:(context)=> ConnectivityService()。connectionStatusController,

在StreamProvider()之后,创建:(_)=> ConnectivityService()。connectionStatusController.stream,

答案 1 :(得分:3)

修正/回答第一篇文章中更新的问题(问题本身)。谢谢。