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

Flutter http请求报错:参数类型String无法分配给参数类型Uri

报错修复方案

报错原因

新版 http 依赖包的网络请求方法(比如get、post)不再接受字符串格式的URL入参,要求必须传入 Uri 类型对象,因此你直接传入字符串URL会触发类型不匹配的报错。

修复操作

你需要做两处调整:

  • 将代码中所有字符串格式的请求URL,用Uri.parse()方法转换为Uri类型
  • 修正代码中的两处逻辑错误:
    1. 判断条件里的冗余写法_search == nullnull,你定义的_search是非空字符串,无需判空,只保留_search.isEmpty判断即可
    2. 搜索接口的参数配置错误:你误将搜索关键词_search赋值给了api_key参数,实际搜索关键词需要传入q参数,api_key保留固定的申请值即可

修正后的完整代码

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  String _search ='';
  int _offset = 0;

  Future<Map>_getGifs() async {
    http.Response response;
    if(_search.isEmpty) {
      response = await http.get(Uri.parse("https://api.giphy.com/v1/gifs/trending?api_key=hyx64ldsiQzZCcFnKzZQZ4mQoTZUSp0L&limit=20&rating=g"));
    } else {
      response = await http.get(Uri.parse("https://api.giphy.com/v1/gifs/search?api_key=hyx64ldsiQzZCcFnKzZQZ4mQoTZUSp0L&q=$_search&limit=25&offset=$_offset&rating=g&lang=en"));
    }
    return json.decode(response.body);
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

内容的提问来源于stack exchange,提问作者Ferreira Fabio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:36:03