我是 dart 新手,在构建 Flutter 应用程序时遇到问题。
我有一个 firestore 数据库作为后端,我从那里获取数据。
当我想使用 == 比较器将名为 status 的部分数据与文本“CREATED”进行比较时,dart 将返回 false。
有人可以解释为什么以及如何正确检查它吗?
rideObject 是一个地图
更新:
这是包含条件的函数:
Widget _getPage() {
if (rideObject == null) {
return OrderRidePage(
address: address,
ridesReference: reference,
setRideReference: this._setRideReference);
} else {
print(rideObject['status']);
if (rideObject['status'] == "CREATED") {
return LoadingPage(
removeRideReference: this._removeRideReference,
rideReference: rideReference);
} else {
return RidePage(
address: address,
ridesReference: reference,
setRideReference: _setRideReference);
}
}
}
Run Code Online (Sandbox Code Playgroud)
print语句返回输出:
我/颤振(15469):已创建
这里可以看到rideObject的结构
有趣的是,rideObject["status"] 是 String 类型,如控制台中所示:
rideObject["status"] is String
true
"CREATED" is String
true
rideObject["status"]
"CREATED"
rideObject["status"] == "CREATED"
false
Run Code Online (Sandbox Code Playgroud)
小智 5
如果两者都是字符串,则可以使用“compareTo”,如果两者相等则返回 0。
if(str1.compareTo(str2)==0){
}
Run Code Online (Sandbox Code Playgroud)
此处解释: https: //www.tutorialspoint.com/dart_programming/dart_programming_string_compareto_method.htm
您从服务器获取的字符串可能已编码并且包含您看不到的特殊字符,请尝试比较两个字符串的十六进制值,然后替换服务器返回的字符串中的所有特殊字符。
使用它,您可以看到两个字符串之间实际不可见的差异:
var text1 = utf8.encode(hardcodedText).toString();
var text2 = utf8.encode(textFromServer).toString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12386 次 |
| 最近记录: |