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

Flutter如何将ListView item的id参数传递到下一页拼接URL拉取JSON数据

实现方案

你已经完成了跳转时传递Photo对象的步骤,只需要调整ContentPage的代码,拿到传入的Photo的id拼接到请求URL即可,修改步骤如下:

1. 完善ContentPage类,存储传入的Photo对象

给ContentPage添加实例属性存储传入的Photo,方便State类访问:

class ContentPage extends StatefulWidget {
  // 新增此行,存储传入的Photo对象
  final Photo photo;
  // 构造器绑定photo属性
  ContentPage({Key? key, required this.photo}) : super(key: key);
  @override
  _MyAppState createState() => _MyAppState();
}

2. 调整fetchAlbum方法,拼接id参数

把原来的全局fetchAlbum方法移到State类内部,就能通过widget.photo拿到传入的Photo实例,再把id拼到请求URL中,推荐用Uri自带的参数构造方式,避免特殊字符编码问题:

class _MyAppState extends State<ContentPage> {
  late Future<Album> futureAlbum;

  // fetchAlbum移到State内部
  Future<Album> fetchAlbum() async {
    // 自动拼接GET参数,自动处理编码
    final requestUri = Uri.https(
      'jsonplaceholder.typicode.com',
      '/albums.php',
      // 这里传入你要的id参数
      {'id': widget.photo.id.toString()}
    );
    final response = await http.get(requestUri);

    if (response.statusCode == 200) {
      return Album.fromJson(jsonDecode(response.body));
    } else {
      throw Exception('Failed to load album');
    }
  }

  @override
  void initState() {
    super.initState();
    futureAlbum = fetchAlbum();
  }

  // 原有build方法可直接复用,小优化:不需要再套MaterialApp,避免多余导航层级
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fetch Data Example'),
      ),
      body: Center(
        child: FutureBuilder<Album>(
          future: futureAlbum,
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return Text(snapshot.data!.title);
            } else if (snapshot.hasError) {
              return Text("${snapshot.error}");
            }
            return CircularProgressIndicator();
          },
        ),
      ),
    );
  }
}

补充说明

如果你习惯直接用字符串拼接URL,也可以把请求地址替换为:

Uri.parse('https://jsonplaceholder.typicode.com/albums.php?id=${widget.photo.id}')

确保你的Photo类中已经定义了id属性即可正常使用。

内容的提问来源于stack exchange,提问作者meet Solo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 23:21:03