You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:45:07