我想检查我的设备上是否有互联网连接,我已经尝试了连接功能,但是它没有帮助我,因为它会检查设备是否已连接到wifi,但没有发现互联网是否存在问题 我的代码:
import 'dart:async';
import 'package:connectivity/connectivity.dart';
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'package:flutter/services.dart';
class WebviewUi extends StatefulWidget {
@override
_WebviewState createState() => _WebviewState();
}
class _WebviewState extends State<WebviewUi> {
String _connectionStatus;
final Connectivity _connectivity = new Connectivity();
StreamSubscription<ConnectivityResult> _connectivitySubscription;
@override
void initState() {
super.initState();
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(statusBarColor: Colors.deepOrangeAccent)
);
_connectivitySubscription =
_connectivity.onConnectivityChanged.listen((ConnectivityResult result){
setState(() {
_connectionStatus = result.toString();
print('Connection Status : $_connectionStatus');
});
});
}
@override
void dispose() {
_connectivitySubscription.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(0),
child: AppBar(
),
),
body: (_connectionStatus == "ConnectivityResult.mobile" ||
_connectionStatus == "ConnectivityResult.wifi") ?
WebviewScaffold(
/*appBar: AppBar(
title: Text(''),
backgroundColor: Colors.deepOrangeAccent,
),*/
url: "https://www.google.net/",
withJavascript: true,
)
:
Container(
child: Image.asset(
'assets/Internet-Access-Error.jpg',
)
)
);
}
}
当我在模拟器上尝试此代码时,我在实验室桌面上切换到飞行模式,这表明:
net::ERR_NAME_NOT_RESOLVED
但是我想显示一个小部件,告诉您存在互联网问题或没有互联网。我该如何进行搜索?我在网站和Facebook群组中搜索了很多东西,但没有找到任何解决方案
答案 0 :(得分:0)
使用connectivity软件包Flutter小组。该软件包可以识别是否启用了wifi或移动数据。但是,无法确定互联网实际能否到达。在这种情况下,@Günter solution is great。请注意,您还可以在zip
http.get()
块中使用http软件包try
并标识catch
(不确定这是否是可重用的好解决方案。)。
简单的例子:
SocketException