无法在Flatter中将json转换为listview 导入“包装:颤振/材料.省道”; 将“package:http/http.dart”导入为http; 导入“dart:async”; 导入“dart:convert”; 类主页扩展了StatefulWidget{ @凌驾 HomePageState createState()=>HomePageState(); } 类HomePageState扩展了状态{ 清单项目; Future getData()异步{ var response=wait http.get( 'https://api.torn.com/torn/?selections=items&key=7PnSA9HkVB5B6eAK'); 此.setState(){ Map items=json.decode(response.body); 印刷品(项目); }); } @凌驾 void initState(){ 这是getData(); } @凌驾 小部件构建(构建上下文){ 返回脚手架( 正文:ListView.builder( itemCount:items==null?0:items.length, itemBuilder:(构建上下文,int索引){ 回程卡( 子项:文本(项[索引]['name']), ); }, ), ); } }

无法在Flatter中将json转换为listview 导入“包装:颤振/材料.省道”; 将“package:http/http.dart”导入为http; 导入“dart:async”; 导入“dart:convert”; 类主页扩展了StatefulWidget{ @凌驾 HomePageState createState()=>HomePageState(); } 类HomePageState扩展了状态{ 清单项目; Future getData()异步{ var response=wait http.get( 'https://api.torn.com/torn/?selections=items&key=7PnSA9HkVB5B6eAK'); 此.setState(){ Map items=json.decode(response.body); 印刷品(项目); }); } @凌驾 void initState(){ 这是getData(); } @凌驾 小部件构建(构建上下文){ 返回脚手架( 正文:ListView.builder( itemCount:items==null?0:items.length, itemBuilder:(构建上下文,int索引){ 回程卡( 子项:文本(项[索引]['name']), ); }, ), ); } },json,flutter,listview,Json,Flutter,Listview,据我所知,Json有两种形式,第一种是列表,第二种是映射。 在我的例子中,我收到了一张包含我需要的所有数据的地图,但不幸的是,我不知道如何正确地显示这些数据。 从“打印”中,我收到了数据,但屏幕上什么也没有发生。您不能重新定义项目。你需要设置它。它将如下所示: import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'dart:async'; import 'dart:conv

据我所知,Json有两种形式,第一种是列表,第二种是映射。 在我的例子中,我收到了一张包含我需要的所有数据的地图,但不幸的是,我不知道如何正确地显示这些数据。
从“打印”中,我收到了数据,但屏幕上什么也没有发生。

您不能重新定义项目。你需要设置它。它将如下所示:

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

class HomePage extends StatefulWidget {
  @override
  HomePageState createState() => HomePageState();
}

class HomePageState extends State<HomePage> {
  List items;

  Future<String> getData() async {
    var response = await http.get(
        'https://api.torn.com/torn/?selections=items&key=7PnSA9HkVB5B6eAK');

    this.setState(() {
      Map items = json.decode(response.body);
      print(items);
    });
  }

  @override
  void initState() {
    this.getData();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        itemCount: items == null ? 0 : items.length,
        itemBuilder: (BuildContext context, int index) {
          return Card(
            child: Text(items[index]['name']),
          );
        },
      ),
    );
  }
}


不能重新定义项目。你需要设置它。它将如下所示:

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

class HomePage extends StatefulWidget {
  @override
  HomePageState createState() => HomePageState();
}

class HomePageState extends State<HomePage> {
  List items;

  Future<String> getData() async {
    var response = await http.get(
        'https://api.torn.com/torn/?selections=items&key=7PnSA9HkVB5B6eAK');

    this.setState(() {
      Map items = json.decode(response.body);
      print(items);
    });
  }

  @override
  void initState() {
    this.getData();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        itemCount: items == null ? 0 : items.length,
        itemBuilder: (BuildContext context, int index) {
          return Card(
            child: Text(items[index]['name']),
          );
        },
      ),
    );
  }
}


检查
getData
方法中的setState,您正在创建一个新的
items
变量,而不是将新值赋给它。试试这个

setState(() {
  items = jsonDecode(response.body);
  print(items);
});
导入'dart:convert';
进口“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
类主页扩展了StatefulWidget{
@凌驾
HomePageState createState()=>HomePageState();
}
类HomePageState扩展了状态{
映射项={};
Future getData()异步{
Response res=wait http.get(
"https://api.torn.com/torn/?selections=items&key=7PnSA9HkVB5B6eAK",
);
setState(()=>items=jsonDecode(res.body)[“items”]);
印刷品(项目);
}
@凌驾
void initState(){
getData();
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:ListView.builder(
itemCount:items.length,
itemBuilder:(上下文,索引){
索引++;
回程卡(
子项:文本(项[index.toString()][“name”]??“Empty”),
);
},
),
);
}
}

检查
getData
方法中的设置状态,您正在创建一个新的
变量,而不是为其分配新值。试试这个

setState(() {
  items = jsonDecode(response.body);
  print(items);
});
导入'dart:convert';
进口“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
类主页扩展了StatefulWidget{
@凌驾
HomePageState createState()=>HomePageState();
}
类HomePageState扩展了状态{
映射项={};
Future getData()异步{
Response res=wait http.get(
"https://api.torn.com/torn/?selections=items&key=7PnSA9HkVB5B6eAK",
);
setState(()=>items=jsonDecode(res.body)[“items”]);
印刷品(项目);
}
@凌驾
void initState(){
getData();
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:ListView.builder(
itemCount:items.length,
itemBuilder:(上下文,索引){
索引++;
回程卡(
子项:文本(项[index.toString()][“name”]??“Empty”),
);
},
),
);
}
}