无法在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有两种形式,第一种是列表,第二种是映射。 在我的例子中,我收到了一张包含我需要的所有数据的地图,但不幸的是,我不知道如何正确地显示这些数据。无法在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
从“打印”中,我收到了数据,但屏幕上什么也没有发生。您不能重新定义项目。你需要设置它。它将如下所示:
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”),
);
},
),
);
}
}