我正在按照以下教程了解基于Internet连接的连接状态。
现在的问题是,那么我正在尝试实现代码。在我使用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以及执行此操作时看到的其他教程中的“沉没”和“流”,但由于本教程的缘故,我在代码和效率方面都遥遥领先。我只是在句号和结尾添加了流!问题解决了。
我希望人们能够找到适合其应用程序的解决方案:)
答案 0 :(得分:4)
仅供参考:从Provider包的v3.x.0迁移到v4.0.0的步骤删除了provider的参数builder和initialBuilder。
之前:StreamProvider(builder:(context)=> ConnectivityService()。connectionStatusController,
在StreamProvider()之后,创建:(_)=> ConnectivityService()。connectionStatusController.stream,
答案 1 :(得分:3)
修正/回答第一篇文章中更新的问题(问题本身)。谢谢。