我想创建一个新闻应用程序,并且已将newsapi.org用作源。
我正在尝试获取Http库提供的JSON数据。
我在下面提供了完整的代码。
它不会给我任何错误,但不会加载任何数据,当我打印数据时,它可以打印所有内容,但无法显示。
我不是什么问题,但是我所有的项目都已停止解决此问题。
我正在寻找此代码的解决方案,因为它不起作用。
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:newly/services/networking.dart';
import 'package:newly/widgets/article.dart';
class NewsScreen extends StatefulWidget {
@override
_NewsScreenState createState() => _NewsScreenState();
}
class _NewsScreenState extends State<NewsScreen> {
List<Article> articles = [];
NetworkHelper networkHelper = NetworkHelper(
url:
'https://newsapi.org/v2/everything?q=bitcoin&apiKey=392495172bab4b3885ae93760df54b91',
);
Future<List<Widget>> getNews() async {
var newsData = await networkHelper.getData();
for (int i = 0; i < await newsData['articles'].length; i++) {
var title = await newsData['articles'][i]['title'];
var urlToImage = await newsData['articles'][i]['urlToImage'];
var content = await newsData['articles'][i]['content'];
var author = await newsData['articles'][i]['author'];
var url = await newsData['articles'][i]['url'];
print(title);
print(urlToImage);
print(url);
print(content);
print(author);
print('123456789123456789123456789123456789');
articles.add(
Article(
author: author,
content: content,
title: title,
url: url,
urlToImage: urlToImage,
),
);
print(articles[0].author);
}
return articles;
}
Future<List<Article>> showArticles() async {
var data = await get(
'https://newsapi.org/v2/everything?q=bitcoin&apiKey=392495172bab4b3885ae93760df54b91',
);
var dataDecoded = await json.decode(data.body);
List<Article> articles = [];
await dataDecoded.forEach(
(article) {
articles.add(
Article(
author: article['author'],
content: article['content'],
title: article['title'],
url: article['url'],
urlToImage: article['urlToImage'],
),
);
},
);
return articles;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.black,
centerTitle: true,
title: Text(
'Newly',
style: TextStyle(
color: Colors.white,
),
),
),
body: FutureBuilder(
future: getNews(),
builder: (context, snapshot) {
return ListView(
children: articles,
);
},
),
);
}
}
网络助手:
import 'package:http/http.dart' as http;
import 'dart:convert';
class NetworkHelper {
NetworkHelper({this.url});
final String url;
Future getData() async {
http.Response response = await http.get(url);
if (response.statusCode == 200) {
String data = response.body;
return json.decode(data);
} else {
print('something wrong');
print(response.statusCode);
}
}
}
问题在于显示文章。yaa也正如@ISpam Ossama所说,您必须使用setState这样将数据添加到列表中。
void getNews() async {
var newsData = await networkHelper.getData();
for (int i = 0; i < newsData['articles'].length; i++) {
var title = newsData['articles'][i]['title'];
var urlToImage = newsData['articles'][i]['urlToImage'];
var content = newsData['articles'][i]['content'];
var author = newsData['articles'][i]['author'];
var url = newsData['articles'][i]['url'];
print(title);
print(urlToImage);
print(url);
print(content);
print(author);
print('123456789123456789123456789123456789');
setState(() {
articles.add(
Article(
author: author,
content: content,
title: title,
url: url,
urlToImage: urlToImage,
),
);
});
print(articles[0].author);
}
}
现在,您必须显示这样的文章。
ListView.builder(
itemCount: articles.length,
itemBuilder: (BuildContext ctxt, int index) {
return Text(articles[index].title);
},
)
希望对您有帮助!
问题内容: 如何在Flutter中解码JSON? 问题很简单,但答案至少对我来说不是。 我有一个使用大量JSON字符串的项目。基本上,应用程序和服务器之间的整个通信是通过JSON进行的。 我一直在使用它来处理它,但今天我更新了Flutter核心(0.5.8-pre.178),并且JSON.decode不再可用。 我去了Flutter Docs寻求帮助,但仍然说要使用JSON.decode。 那么,
在Flutter中解析我的时出现了一个问题。这是我的JSON。 我已经为这个数据生成了一个模型,它工作得很完美。 因此,在每个索引中都有另一个列表,我需要将其保存在InsurancePolicyType对象中。这就是我试图获取的数据。如何在代码中获取?我需要去拿那张名单,但我没能去。
我从一个复杂的json中获取空数据,这里是json。当我试图解析它时,我得到了null。请看一看。 我已生成模型类:https://javiercbk.github.io/json_to_dart/ 生成模型类后,创建一个新的类名ModelClass。 另一个类名为APiResponse并编写代码:这个类获取api响应并返回响应:APiResponse。fromJson(jsonDecode(re
问题内容: 我在s3中有很多gzip日志文件,其中有3种类型的日志行:b,c,i。我和c都是单层json: 类型b是深度嵌套的json。我碰到这个要点,谈论要编译一个罐子来完成这项工作。由于我的Java技能还不算出色,因此我真的不知道该怎么做。 由于类型i和c并不总是相同的顺序,因此很难在生成正则表达式中指定所有内容。Pig是否可以处理JSON(在gzip文件中)?我正在使用在Amazon Ela
问题内容: 我的项目目前正在python中接收JSON消息,我需要从中获取一些信息。为此,我们将其设置为字符串中的一些简单JSON: 到目前为止,我一直在使用列表生成JSON请求,但是与此相反,我认为我需要使用。但是我没有那么幸运。谁能为我提供一个片段,该片段将在上述示例的输入中返回? 问题答案: 很简单:
问题内容: 我从服务中收到一个很深的JSON对象字符串,必须将其解析为JSON对象,然后将其映射到类。 如何在Kotlin中将JSON字符串转换为对象? 在映射到各个类之后,我使用了Jackson的StdDeserializer。当对象具有必须反序列化为类的属性时,就会出现问题。我无法在另一个反序列化器中获取对象映射器,至少我不知道该怎么做。 在此先感谢您的帮助。最好是在本地,我试图减少所需的依赖