Fixed-error: How to Solve The return type 'StreamController<ConnectivityStatus>' isn't a 'Stream', as defined by anonymous closure error

Fixed-error: How to Solve The return type 'StreamController<ConnectivityStatus>' isn't a 'Stream', as defined by anonymous closure error

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

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

现在的问题是,我正在尝试实现代码。在我使用 StreamProvider 的过程结束时,在生成器中我收到以下错误:

错误:return 类型 '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 代码完全替换我的类型代码,link 下面: 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,然后转移到流提供程序和在这方面做了更多的 RND,当这样做时,在另一个教程中看到了 sink 和 stream,但是由于本教程,我在代码和效率方面遥遥领先。我刚刚在句末添加了流,瞧!问题已解决。

我希望人们能够找到这个解决方案,为他们的应用程序做好准备:)

仅供参考:在从 v3.x.0 到 v4.0.0 的提供程序包迁移中,删除了提供程序的 builderinitialBuilder 参数。

之前:

StreamProvider( builder: (context) => ConnectivityService().connectionStatusController,

之后:

StreamProvider( create: (_) => ConnectivityService().connectionStatusController.stream,