简体   繁体   English

flutter 中是否有任何方法可以在不使用“提供者”的情况下检查互联网连接?

[英]Is there any way in flutter to check internet connectivity without using "provider"?

Is there any way in flutter to check internet connectivity without using "provider"? flutter 中是否有任何方法可以在不使用“提供者”的情况下检查互联网连接? I've tried it with it doesn't seems good to me.我试过了,对我来说似乎不太好。 Thanks in advance提前致谢

Use this package: https://pub.dev/packages/connectivity_plus使用这个 package: https://pub.dev/packages/connectivity_plus

import 'package:connectivity_plus/connectivity_plus.dart';

var connectivityResult = await (Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile) {
  // I am connected to a mobile network.
} else if (connectivityResult == ConnectivityResult.wifi) {
  // I am connected to a wifi network.
}
import 'dart:io';
Future<bool> checkNetwork() async {
  bool isConnected = false;
  try {
    final result = await InternetAddress.lookup('google.com');
    if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
      isConnected = true;
    }
  } on SocketException catch (_) {
    isConnected = false;
  }
  return isConnected;
} 

Usages:用途:

if(await checkNetwork()){
    print('connected to internet');
}
else{
    print('disconnect');
}

Use This Package https://pub.dev/packages/connectivity_plus使用这个 Package https://pub.dev/packages/connectivity_plus

initialize the Connectivity result with a none at start.在开始时使用 none 初始化 Connectivity 结果。

ConnectivityResult _connectionStatus = ConnectivityResult.none;
final Connectivity _connectivity = Connectivity();

for stream, if the internet connect/disconnect in the middle of the app.对于 stream,如果在应用程序中间连接/断开互联网。

 late StreamSubscription<ConnectivityResult> _connectivitySubscription;
            
    

Call that function from initstate从 initstate 调用 function

Future<void> initConnectivity() async {
        late ConnectivityResult result;
        try {
          result = await _connectivity.checkConnectivity();
        } on PlatformException catch (e) {
          print(e);
          return;
        }
        if (!mounted) {
          return Future.value(null);
        }
    
        return _updateConnectionStatus(result);
      }
    
_connectivitySubscription = _connectivity.onConnectivityChanged.listen(_updateConnectionStatus);
    
    if (_connectionStatus == ConnectivityResult.mobile ||_connectionStatus==ConnectivityResult.wifi) 
    {
internet is available
    }
    else{not available}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM