【发布时间】:2021-01-20 03:27:23
【问题描述】:
我还是 Flutter 的新手,正在学习构建应用程序。我一直在尝试运行此代码,但每次运行它时,我都会在 android 模拟器上看到一个红屏,并出现一个错误,即“断言失败:第 22 行 pos 14 'url != null':不正确”。
这是我运行应用程序的主文件
import "package:flutter/material.dart";
import "src/app.dart";
voidmain() {
runApp(MyApp());
}
我的应用文件有这个代码
import 'package:flutter/material.dart';
import 'package:http/http.dart' show get;
import 'models/image_models.dart';
import 'dart:convert';
import 'widgets/image_list.dart';
class MyApp extends StatefulWidget {
createState() {
return AppState();
}
}
class AppState extends State<MyApp> {
int counter = 0;
List<ImageModels> images = [];
void fetchImage() async {
counter++;
var response =
await get('http://jsonplaceholder.typicode.com/photos/$counter');
var imagemodel = ImageModels.fromjson(json.decode(response.body));
setState(() {
images.add(imagemodel);
});
}
Widget build(context) {
return MaterialApp(
home: Scaffold(
body: ImageList(images),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
fetchImage();
}),
appBar: AppBar(title: Text("Ola Amigo!")),
));
}
}
这是 ImageModel 类
class ImageModels {
int id;
String url;
String title;
ImageModels(this.id, this.url, this.title);
ImageModels.fromjson(Map<String, dynamic> parsedjson) {
id = parsedjson[id];
title = parsedjson[title];
url = parsedjson[url];
}
}
最后是 ImageList
import 'package:flutter/material.dart';
import '../models/image_models.dart';
class ImageList extends StatelessWidget {
final List<ImageModels> image;
ImageList(this.image);
Widget build(context) {
return ListView.builder(
itemCount: image.length,
itemBuilder: (context, int index) {
return buildImage(image[index]);
});
}
Widget buildImage(ImageModels image) {
return Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.grey)
),
padding: EdgeInsets.all(20.0),
margin: EdgeInsets.all(20.0),
child: Image.network(image.url),
);
}
}
有人可以看看它并告诉我我做错了什么以及如何解决这个问题。 谢谢
【问题讨论】:
-
您将一个空对象传递给
Image.network()。所以检查image.url是否为空。
标签: android-studio flutter dart