Основной файл dart на самом деле я создаю новостное приложение, которое получает информацию о новостях с помощью файла json, но я не могу показать данные на экране
import 'package:flutter/material.dart';
import 'package:newsapi/model.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Future<NewsApi> news;
@override
void initState() {
super.initState();
news = news;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("MovieApp"),
),
body: FutureBuilder<NewsApi>(
future: news,
builder: (context, snapshot) {
return Text(snapshot.data.articles.toString());
}),
);
}
}
Мой класс Netwrok
import 'dart:convert';
import 'package:http/http.dart';
import 'package:newsapi/model.dart';
class Network {
Future<NewsApi> getNews() async {
var finalurl =
"https://newsapi.org/v2/top-headlines?country=us&apiKey=cdffcc6901e24943ad89df8cdb69a0eb";
final Response response = await get(Uri.encodeFull(finalurl));
if (response.statusCode == 200) {
print("NEws:${response.body}");
return NewsApi.fromJson(jsonDecode(response.body));
} else {
throw Exception("Error Getting the data");
}
}
}
мой основной класс модели, созданный расширением gtihub, я просто использую инструмент преобразования json в dart
class NewsApi {
String status;
int totalResults;
List<Articles> articles;
NewsApi({this.status, this.totalResults, this.articles});
NewsApi.fromJson(Map<String, dynamic> json) {
status = json['status'];
totalResults = json['totalResults'];
if (json['articles'] != null) {
articles = new List<Articles>();
json['articles'].forEach((v) {
articles.add(new Articles.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['status'] = this.status;
data['totalResults'] = this.totalResults;
if (this.articles != null) {
data['articles'] = this.articles.map((v) => v.toJson()).toList();
}
return data;
}
}
class Articles {
Source source;
String author;
String title;
String description;
String url;
String urlToImage;
String publishedAt;
String content;
Articles(
{this.source,
this.author,
this.title,
this.description,
this.url,
this.urlToImage,
this.publishedAt,
this.content});
Articles.fromJson(Map<String, dynamic> json) {
source =
json['source'] != null ? new Source.fromJson(json['source']) : null;
author = json['author'];
title = json['title'];
description = json['description'];
url = json['url'];
urlToImage = json['urlToImage'];
publishedAt = json['publishedAt'];
content = json['content'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.source != null) {
data['source'] = this.source.toJson();
}
data['author'] = this.author;
data['title'] = this.title;
data['description'] = this.description;
data['url'] = this.url;
data['urlToImage'] = this.urlToImage;
data['publishedAt'] = this.publishedAt;
data['content'] = this.content;
return data;
}
}
class Source {
String id;
String name;
Source({this.id, this.name});
Source.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
return data;
}
}
Я получаю сообщение об ошибке. При построении FutureBuilder (грязный, состояние: _FutureBuilderState # 6b8bd) была выброшена следующая ошибка NoSuchMethodError: получатель 'article' был вызван с нулевым значением. Получатель: null Пробовали звонить: статьи