如何解决使用 data_connection_checker 包时对不相关类型的引用进行相等运算符 `==` 调用
为了检查互联网连接,我使用了 data_connection_checker 包,但似乎我不知道如何使用它。 我正在使用以下代码通过调用 initstate 来检查互联网连接
Widget _showDialog(String err,String content,BuildContext context) {
showDialog(
context: context,builder: (BuildContext context) {
return AlertDialog(
title: new Text(err),content: new Text(content),actions: <Widget>[
new FlatButton(
onPressed: () {
Navigator.of(context).pop();
setState(() {
});
},child: new Text("Try Again"))
]
);
}
);
}
Future checkConnection(BuildContext context) async{
listener = DataConnectionChecker().onStatusChange.listen((status) {
switch (status){
case DataConnectionStatus.connected:
return "DataConnectionState.connected";
break;
case DataConnectionStatus.disconnected:
InternetStatus = "You are disconnected to the Internet. ";
contentmessage = "Please check your internet connection";
_showDialog(InternetStatus,contentmessage,context);
break;
}
});
return await DataConnectionChecker().connectionStatus;
}
但我也在尝试检查 FutureBuilder 小部件中的互联网连接。我做了以下函数来调用检查
Future<bool> internetChecker(BuildContext context) async{
if( await DataConnectionChecker().hasConnection){
return true;
// Future<bool>.value(true);
}
else{
return false;
// Future<bool>.value(false);
}
}
但是 DataConnectionChecker().hasConnection 显示错误,直到我像上面一样使用 await 之前。
FututreBuilder:
builder:(BuildContext context,AsyncSnapshot snapshot) {
if(internetChecker(context) == true){
if(snapshot.hasData){
if(snapshot.data==null){
return _showDialog('Unexpected Error','Data was null',context);
}
else{
return SafeArea(...);
}
}
else{
return Center(child: Image.asset("assets/images/369.gif",fit: BoxFit.fill,));
}
}
else{
return _showDialog('No Internet Connection','Check your Internet Connection and Try Again!!',context);
}
}
),}
我正在 FutureBuilder 的构建器中尝试所有这些。 现在,如果当我写“internetChecker(context) == true”时,它会告诉我这个 !!!!!!!!!!!!!!!!!!
Equality operator '==' invocation with references of unrelated types.
!!!!!!!!!!!!!!
编辑: 此外,在调试期间的 internetchecker 函数中,我注意到它只是跳转 if else 条件并且不返回任何非真或假的东西。我不明白为什么。
请告诉我如何解决它或任何其他有效的方法。
解决方法
您比较了 2 个元素,但不是同一类型。 Future 与 bool 类型不同。
试试
internetChecker(context).then((value){
value == true ? ...
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。