You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已有网络连接检测代码,如何检测Wi-Fi/蜂窝网络是否连互联网?

检测网络是否接入互联网的实现方案

你当前的代码只能检测设备是否连接到Wi-Fi或移动网络,但无法确认这个网络是否真的能访问互联网。要实现互联网连通性检测,你可以通过发起一个轻量的HTTP请求来验证,下面是具体实现方法:

  • 首先添加http依赖到pubspec.yaml(如果还没添加):
dependencies:
  http: ^1.1.0
  • 编写异步函数验证互联网连通性:
import 'package:http/http.dart' as http;

Future<bool> hasInternetConnection() async {
  try {
    // 访问Google的无内容响应接口,轻量且适合检测连通性
    final response = await http.get(Uri.parse('http://clients3.google.com/generate_204'));
    // 状态码204表示请求成功,说明能访问互联网
    return response.statusCode == 204;
  } catch (e) {
    // 请求失败,说明无法访问互联网
    return false;
  }
}
  • 整合到现有代码中,在检测到网络连接后验证互联网连通性:
final Connectivity connectivity = Connectivity();
bool isConnected = false;
late final StreamSubscription connectivyStream;

@override
void initState() {
  super.initState();

  connectivyStream = connectivity.onConnectivityChanged.listen((List<ConnectivityResult> results) {
    setState(() {
      isConnected = !results.contains(ConnectivityResult.none);
    });

    if (isConnected) {
      // 验证互联网连通性
      hasInternetConnection().then((hasInternet) {
        final snackBarContent = hasInternet 
            ? '已接入互联网!' 
            : '网络已连接但无法访问互联网!';
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text(snackBarContent, style: GoogleFonts.poppins(fontWeight: FontWeight.bold)),
          ),
        );
      });
    } else {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('未连接到任何网络!', style: GoogleFonts.poppins(fontWeight: FontWeight.bold)),
        ),
      );
    }
  });
}

@override
void dispose() {
  connectivyStream.cancel();
  super.dispose();
}

注意事项

  • 确保Android项目的AndroidManifest.xml中添加了INTERNET权限:
<uses-permission android:name="android.permission.INTERNET" />
  • 若需要适配国内网络环境,可以替换检测地址为国内稳定的轻量接口(如http://www.baidu.com,需调整响应判断逻辑)
  • 可以添加防抖逻辑,避免网络状态频繁变化时发起过多请求

内容的提问来源于stack exchange,提问作者laurent pierre konan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:12:25