繁体   English   中英

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

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

flutter 中是否有任何方法可以在不使用“提供者”的情况下检查互联网连接? 我试过了,对我来说似乎不太好。 提前致谢

使用这个 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;
} 

用途:

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

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

在开始时使用 none 初始化 Connectivity 结果。

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

对于 stream,如果在应用程序中间连接/断开互联网。

 late StreamSubscription<ConnectivityResult> _connectivitySubscription;
            
    

从 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