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

Flutter聊天助手报_TypeError:'String'非'index'的'int'子类型求助

Flutter集成ChatGPT API的错误修复

1. 类型错误(_TypeError: type 'String' is not a subtype of type 'int' of 'index')

你的API响应解析逻辑完全错误,ChatGPT的/v1/chat/completions返回结构里,model是字符串(比如"gpt-3.5-turbo-0613"),你用["model"][0]去索引字符串,自然会触发类型错误。正确的解析路径应该是从choices数组里取第一条结果的message.content。

修改ApiService里的解析代码:

if (response.statusCode == 200) {
  final Map<String, dynamic> responseData = jsonDecode(response.body);
  // 正确的解析路径
  final String content = responseData["choices"][0]["message"]["content"];
  // 注意:trim()返回新字符串,需要重新赋值后返回
  return content.trim();
}

原代码里content.trim();没有赋值,属于无效操作,必须修正为返回处理后的字符串。

2. API未被调用的问题

检查以下几点:

  • 确认API_KEY常量文件里已经替换成新的API密钥,没有拼写错误,包括Bearer 后面的空格不能省略。
  • 检查Flutter项目的网络权限:Android端在android/app/src/main/AndroidManifest.xml里添加<uses-permission android:name="android.permission.INTERNET"/>;iOS端默认允许HTTPS请求,无需额外配置,但若之前修改过Info.plist需确认未禁用网络。
  • 验证新API密钥的权限:登录OpenAI后台,确认密钥已启用、有足够额度,且允许调用gpt-3.5-turbo模型。
  • 排查请求拦截:检查设备代理设置、防火墙或测试环境网络限制,确认请求能正常发送到OpenAI服务器。

3. 消息发送代码的小优化

调用ApiService.sendMessage时,方法参数是required String prompt,但你传入的是_messageController.text,而sendTextMessage本身接收String prompt参数,存在不一致,建议统一用传入的prompt:

final response = await ApiService.sendMessage(prompt: prompt);

内容的提问来源于stack exchange,提问作者Furqan Saify

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:42:30