And*_*ter 2 connectivity dart flutter flutter-dependencies
我在项目中使用连接包来检查互联网连接。
文件main.dart代码:
StreamProvider<ConnectivityResult>(
create: (context) =>
InternetConnectionService().connectionStatusController.stream,
child: MaterialApp(
.....
Run Code Online (Sandbox Code Playgroud)
在每个屏幕上我检查互联网连接,如下所示:
bool hasConnection;
void checkConnectivity(context) async {
var connectivityResult = Provider.of<ConnectivityResult>(context);
if (connectivityResult == ConnectivityResult.none ||
connectivityResult == null) {
setState(() {
hasConnection = false;
});
} else {
setState(() {
hasConnection = true;
});
}
}
Widget build(BuildContext context) {
checkConnectivity(context);
return hasConnection == true
? Scaffold()
: NoInternetScreen();
}
Run Code Online (Sandbox Code Playgroud)
如何从根或一个小部件全局检查连接,而不是在每个屏幕上检查连接,并且不显示连接屏幕?
在您的 MaterialApp 小部件中,有一个构建器。您可以使用构建器将路径包装在任何小部件中。尝试这样做:
MaterialApp(
...
builder: (context, child) {
return StreamBuilder<ConnectivityResult>(
stream: InternetConnectionService().connectionStatusController.stream,
builder: (context, snapshot) {
final conenctivityResult = snapshot.data;
if (connectivityResult == ConnectivityResult.none || connectivityResult == null) return NoInternetScreen();
return child;
}
);
}
);
Run Code Online (Sandbox Code Playgroud)
现在您不必在其他文件中添加任何互联网逻辑。您可以简单地编写排除它们的构建方法。
| 归档时间: |
|
| 查看次数: |
7990 次 |
| 最近记录: |