Dart代码类型兼容问题求助:ConnectivityResult与List不匹配
解决connectivity_plus包的类型兼容错误
问题原因
connectivity_plus包的checkConnectivity()方法在新版本中返回值类型已从单个ConnectivityResult改为List<ConnectivityResult>(支持设备同时存在多种网络连接的场景),而你的代码仍将其当作单个值进行比较,导致类型不兼容错误。
修复方案
修改网络状态判断逻辑,针对列表类型做包含性检查:
方法一:使用contains方法
将原判断条件替换为:
if (!connectionResult.contains(ConnectivityResult.mobile) && !connectionResult.contains(ConnectivityResult.wifi))
方法二:使用any方法(更简洁)
用any方法简化判断逻辑:
if (!connectionResult.any((result) => result == ConnectivityResult.mobile || result == ConnectivityResult.wifi))
修改后的完整代码
import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter/material.dart'; class CommonMethods { checkConnectivity(BuildContext context) async { var connectionResult = await Connectivity().checkConnectivity(); if (!connectionResult.any((result) => result == ConnectivityResult.mobile || result == ConnectivityResult.wifi)) { if (!context.mounted) return; displaySnackBar("your Internet is not Available. Check your connection. Try Again.", context); } } displaySnackBar(String messageText, BuildContext context) { var snackBar = SnackBar(content: Text(messageText)); ScaffoldMessenger.of(context).showSnackBar(snackBar); } }
内容的提问来源于stack exchange,提问作者Sahr Josiah-Faeduwor
相关产品推荐
相关产品推荐

