Flutter接入Auth0时运算符[]未定义对应Function类型报错如何修复
报错原因
你遇到的报错是因为混淆了「函数调用」和「Map对象取值」的用法:
parseIdToken是你自定义的同步函数,需要传入idToken参数调用后才能得到返回的Map对象,你直接对函数本身用[]取值自然不存在该操作符getUserDetails是你自定义的异步函数,不仅需要传入accessToken参数调用,还需要用await等待异步执行完成拿到返回的Map对象后,才能用[]取值
修复方案
你需要在执行setState前先调用这两个函数拿到解析/请求后的Map数据,再对返回的Map取对应字段值即可。
修改后的代码片段如下:
// 原有获取result、定义parseIdToken、getUserDetails的代码保留不变 await secureStorage.write( key: 'refresh_token', value: result!.refreshToken); // 新增:调用函数拿到结果 // 解析idToken拿到用户信息 final idToken = result.idToken!; final parsedIdInfo = parseIdToken(idToken); // 请求用户详情接口拿到头像信息 final accessToken = result.accessToken!; final userInfo = await getUserDetails(accessToken); setState(() { isBusy = false; isLoggedIn = true; // 从返回的Map对象中取对应字段 name = parsedIdInfo['name'] as String; picture = userInfo['picture'] as String; });
额外优化建议
可以增加非空判断避免token为空时出现崩溃:
if (result.idToken != null && result.accessToken != null) { // 执行解析、请求接口、赋值的逻辑 } else { // 处理token为空的异常场景 }
内容的提问来源于stack exchange,提问作者tdrsam
相关产品推荐
相关产品推荐

