如何检查互联网连接是否存在问题?

时间:2019-05-26 23:54:01

标签: flutter dart

我想检查我的设备上是否有互联网连接,我已经尝试了连接功能,但是它没有帮助我,因为它会检查设备是否已连接到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群组中搜索了很多东西,但没有找到任何解决方案

1 个答案:

答案 0 :(得分:0)

使用connectivity软件包Flutter小组。该软件包可以识别是否启用了wifi或移动数据。但是,无法确定互联网实际能否到达。在这种情况下,@Günter solution is great。请注意,您还可以在zip http.get()块中使用http软件包try并标识catch(不确定这是否是可重用的好解决方案。)。

简单的例子:

SocketException