List 如何在列表中打印响应数据?

List 如何在列表中打印响应数据?,list,flutter,http,dio,List,Flutter,Http,Dio,我试图在列表生成器中列出response.data中的数据,但无法解析从响应中获取的数据。 以下是我要使用的代码: import 'package:flutter/material.dart'; import 'package:dio/dio.dart'; Future getIds() async { var response = await Dio().get( 'https://hacker-news.firebaseio.com/v0/topstories.json?p

我试图在列表生成器中列出response.data中的数据,但无法解析从响应中获取的数据。 以下是我要使用的代码:

import 'package:flutter/material.dart';
import 'package:dio/dio.dart';

Future getIds() async {
  var response = await Dio().get(
      'https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty');
   return response.data;
}



void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
List ids = getIds();
  @override
  Widget build(BuildContext context) {
    getIds();
    return ListView.builder(
      itemCount: ids.length,
        itemBuilder: null);
  }
}


如何使用dio来显示数据?

您不能使用无状态小部件来显示API中的数据。您必须使用statefull小部件,并在ItemBuilder中返回一个小部件

itemBuilder:(BuildContext context, int index) {
  return Text("${ids[index]["yourKey"]}")
 }
并在init state中添加函数

List ids;
@override
void initState() {
  TODO: implement initState
 super.initState();
 ids = getIds();

}有一些解决方案

  • 未来建设者

    FutureBuilder(
    future: getIds(),
    builder: (context, snapshot) {
      if (snapshot.hasData) {
        List<Map<String, dynamic>> ids =
          snapshot.data;
        return ListView.builder(
      itemCount: ids.length,
        itemBuilder:(BuildContext context, int index) {
          return Text("${ids[index]["yourKey"]}")
       });
      } else if (snapshot.hasError) {
        return snapshot.error;
      } else {
        return Center(
        child: CircularProgressIndicator(),
      );
      }
    })
    

但如何使用我获得的响应数据?
setState(() {
  ids = dataList;
});