在针对Android模拟器进行调试时,我的App可以成功进行身份验证,但是如果我尝试对物理设备(具有相同的OS版本)使用调试进行身份验证,则在等待一分钟以上后会出现错误消息:
发生异常。
_TypeError(类型“字符串”不是“索引”的类型“ int”的子类型)
错误消息指向以下代码:
if (responseJson[AuthUtils.authTokenKey] != null) {
AuthUtils.insertDetails(
userNameController.text, passwordController.text, responseJson);
...
} else {
...
};
在调试控制台中,我得到以下信息:
I / flutter(9531):身份验证:SocketException:操作系统错误:连接已计时 出,errno = 110,地址= example.com,端口= 38975 V / InputMethodManager(9531):开始输入: tba=android.view.inputmethod.EditorInfo@4aece4e nm: example.com.todoapp ic = null
我在这里做什么错了?
答案 0 :(得分:3)
我相信这一行:
responseJson[responseJson.indexOf(AuthUtils.authTokenKey)]
您通过索引 AuthUtils.authTokenKey
引用列表 responseJson 中的项目。并且由于 AuthUtils.authTokenKey 是字符串,因此您不能在数组索引中使用它。
因此,您首先需要获取 AuthUtils.authTokenKey 的索引,然后使用它来引用该项:
['ann', 'nne', 'nef', 'efr', 'fra', 'ran', 'ank', 'nk']
答案 1 :(得分:2)
'String'不是'index'的'int'类型的子类型直接意味着您在此处使用String代替Int :responseJson [AuthUtils.authTokenKey]将int用作索引哪里 -> AuthUtils.authTokenKey是一个String。 *
在控制台中打印您的response.body并检查您的位置 authTokenKey已存储。
* 您可以通过在响应中使用indexOf直接获取其索引,并在响应中用作获取authTokenKey的索引
答案 2 :(得分:1)
在Firebase Firestore中测试数据库时遇到此错误。
以下断言被抛出 StreamBuilder(脏,状态: _StreamBuilderBaseState>#52d4b):类型'String'不是子类型 类型为“ int”
问题是我的文档字段具有字符串类型,但是它需要一个数字。因此,将字符串从数字更改为数字就可以了。
答案 3 :(得分:1)
这对我有用。我当时只是在颤抖。
http.Response S=await
http.get("Your link here");
String responseBody = S.body;
dynamic jsonObject = jsonDecode(jsonDecode(S.body));
print(jsonObject[0]["product_id"]);
setState(() {
data=jsonObject[0]["product_id"];
});
答案 4 :(得分:0)
我有一个与此非常相似的问题。这是由于对var的条件赋值导致的,该赋值导致类型在运行时发生更改。看一下NetworkUtil.authencateUser返回什么。我敢打赌这是一个未来尝试将其更改为Future>。
您的模拟器是否具有其他SHA1密钥?这可能是两种环境之间差异的原因。
答案 5 :(得分:0)
对于我来说 responseJson是动态数据类型,我要做的就是将其转换为字符串。
更改此
responseJson [AuthUtils.authTokenKey]
对此
positionIndicator.isVisible = true
答案 6 :(得分:0)
检查响应是否返回数组数据。
{[{authTokenKey: 'asbc'}]}
在这种情况下,您需要使用[0]元素。然后,您将获得Map,可以在其中访问带有String值的索引。
var authTokenElm = responseJson[0];
var authToken = authTokenElm[AuthUtils.authTokenKey];
答案 7 :(得分:0)
$json_encode = json_encode($query_array);
$json_encode = str_replace("[", "", $json_encode);
$json_encode = str_replace("]", "", $json_encode);
echo $json_encode;
答案 8 :(得分:0)
对于那些提出API投递请求的人,请发送地图,
final payload = {data: [Array should be sent in this format]}
当您要将Man