flutter如何检测网络状态
在Flutter应用中,如何实时检测设备的网络连接状态?比如用户从WiFi切换到移动数据或完全断网时,如何准确获取当前网络类型(WiFi/蜂窝/无网络)并触发回调?最好能提供性能优化的方案,避免频繁检测导致耗电增加。官方推荐的connectivity_plus插件在实际使用中是否有坑需要注意?
        
          2 回复
        
      
      
        使用connectivity_plus包检测网络状态。示例代码:
var connectivityResult = await Connectivity().checkConnectivity();
if (connectivityResult == ConnectivityResult.mobile) {
  // 移动网络
} else if (connectivityResult == ConnectivityResult.wifi) {
  // WiFi
} else {
  // 无网络
}
需添加依赖:connectivity_plus: ^5.0.2
更多关于flutter如何检测网络状态的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中检测网络状态,推荐使用 connectivity_plus 包。以下是具体实现步骤:
- 
添加依赖 在 pubspec.yaml中添加:dependencies: connectivity_plus: ^5.0.1
- 
基本使用 import 'package:connectivity_plus/connectivity_plus.dart'; // 检查当前网络状态 Future<void> checkConnectivity() async { var connectivityResult = await Connectivity().checkConnectivity(); if (connectivityResult == ConnectivityResult.mobile) { print('移动网络'); } else if (connectivityResult == ConnectivityResult.wifi) { print('WiFi网络'); } else if (connectivityResult == ConnectivityResult.none) { print('无网络连接'); } }
- 
监听网络状态变化 StreamSubscription<ConnectivityResult>? subscription; [@override](/user/override) void initState() { super.initState(); subscription = Connectivity().onConnectivityChanged.listen((result) { // 处理网络状态变化 print('网络状态变为: $result'); }); } [@override](/user/override) void dispose() { subscription?.cancel(); super.dispose(); }
注意事项:
- 该包仅检测网络连接类型,不保证一定能访问互联网
- 如需检测真实网络可达性,建议配合 http包尝试访问特定地址
- Android需添加网络权限:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
这是最常用的网络状态检测方案,简单可靠且支持跨平台。
 
        
       
             
             
            

