【发布时间】:2020-10-19 06:47:15
【问题描述】:
当我尝试将 json 对象包装在 Text 小部件中时出现此错误,代码如下
import 'package:flutter/material.dart';
import '../drawer.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class Homepage extends StatefulWidget {
@override
_HomepageState createState() => _HomepageState();
}
class _HomepageState extends State<Homepage> {
var url = "http://jsonplaceholder.typicode.com/photos";
var data;
// Used to initialize something before starting of the screen
@override
void initState() {
// TODO: implement initState
super.initState();
fetchdata();
}
fetchdata() async {
var res = await http.get(url);
// print(res.body);
// json parsing
data = jsonDecode(res.body);
print(data);
//To tell the UI that we got the data
setState(() {});
}
@override
Widget build(BuildContext context) {
//Scaffold has prebuild some widget themes
return Scaffold(
backgroundColor: Colors.green[100],
appBar: AppBar(
title: Text("My App"),
),
// Container is similiar to <Div>
body: data != null
? ListView.builder(itemBuilder: (context, index) {
return ListTile(
title: Text(data[index]["title"]),
);
})
如您所见,我收到了一个 HTTP 响应并将其转换为 json 对象,并尝试按需在 Listview 中显示标题对象。即使我包裹在 Text 小部件中,它也会显示错误,
类型 'String' 不是类型 'Widget' 的子类型
请修复这个错误,谢谢提前~。我是新来的颤振
【问题讨论】:
-
如果
data == null,你在三元条件下返回什么而不是 ListView? -
建议您使用 FutureBuilder 来初始化您的未来,并在未来完成时显示数据
-
嗨@JRamos29,如果数据== null,仅使用不确定的循环进度指示器小部件
-
嗨@OmerGamliel,对不起,我是新手,如果你不介意,你能更新我上面的代码并解释一下吗?
标签: json flutter listview widget