如果有人知道如何修复这个错误,我会非常感激!我只是想使用API访问网站,saleTitle和saleCode然后显示它。所有的代码都在下面,希望这只是一个我忽略的简单修复
任何想要查看数据结构的人都可以使用API
https://script.googleusercontent.com/macros/echo?user_content_key=Y_qRVeSoWYVdwEEUjYAO42F6aIaQNXocQEXoTFW6doAyqKv5l-_jMLFTVLh40To9roCT2UfJUuF3FYokjPQiYV6f8jDWRg7rm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnIn1TJCxqQfxEAsJc2lSbT1MZbMO8nPyQvnvJosQEZ3HULcKeoNsyQ2_x4lfmdk2Asxlkl-knPMyGGaU2pP6Ntk&lib=MJriFg5Yjkb5Wmz0onstjG7LH4UjpOLQo
或者这里的Json数据
[{"Website":"www.google.com","SaleTitle":"Up to 50% Off On All Tests!","SaleCode":"No Code Required!"},{"Website":"Website","SaleTitle":"SaleTitle","SaleCode":"SaleCode"}]
/// SaleAlert is a data class which stores data fields of Sale.
class SaleAlert {
final String website;
final String saleTitle;
final String saleCode;
SaleAlert({this.website, this.saleTitle, this.saleCode});
factory SaleAlert.fromJson(Map<String, dynamic> json) {
return SaleAlert(
website: json['Website'],
saleTitle: json['SaleTitle'],
saleCode: json['SaleCode'],
);
}
}
屏幕文件
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:healthy_start_app/models/sale.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:http/http.dart' as http;
Future<SaleAlert> fetchAlert() async {
String url =
'https://script.google.com/macros/s/AKfycbwMcc8DHjHavJayNNJJGdfs0JNkClt3_tanyZ4p91DgcfRO58fi-5yK/exec';
final response = await http.get(url);
if (response.statusCode == 200) {
return SaleAlert.fromJson(jsonDecode(response.body));
} else {
throw Exception('Failed to find latest allergy alert');
}
}
class SaleTile extends StatefulWidget {
@override
_SaleTileState createState() => _SaleTileState();
}
class _SaleTileState extends State<SaleTile> {
Future<SaleAlert> futureSaleAlert;
@override
void initState() {
super.initState();
futureSaleAlert = fetchAlert();
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
},
child: Container(
width: MediaQuery.of(context).size.width * 0.95,
height: 100.0,
child: Padding(
padding: const EdgeInsets.all(15.0),
child: Column(
children: [
FutureBuilder<SaleAlert>(
future: futureSaleAlert,
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(
snapshot.data.saleTitle,
);
} else if (snapshot.hasError) {
return Text(
snapshot.error.toString(),
);
}
return Text(
'Loading...',
);
;
},
),
],
),
),
),
);
}
}
您可以尝试使用此代码这是您的API调用方法
Future<List<SaleAlert>> fetchAlert() async {
String url =
'https://script.google.com/macros/s/AKfycbwMcc8DHjHavJayNNJJGdfs0JNkClt3_tanyZ4p91DgcfRO58fi-5yK/exec';
final response = await http.get(url);
if (response.statusCode == 200) {
final parsed = json.decode(response.body).cast<Map<String, dynamic>>();
return parsed.map<SaleAlert>((json) => SaleAlert.fromJson(json)).toList();
} else {
throw Exception('Failed to find latest allergy alert');
}
}
这是您的FutureBuilder
FutureBuilder<List<SaleAlert>>(
future: fetchAlert(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(
snapshot.data[0].saleTitle,
);
} else if (snapshot.hasError) {
return Text(
snapshot.error.toString(),
);
}
return Text(
'Loading...',
);
;
},
),
并从initState()中删除这一行
@override
void initState() {
super.initState();
// futureSaleAlert = fetchAlert(); <-- remove
}
我希望你正在寻找这个答案
我的JSON有点像这样: 我的模型类: 这是我的api调用: 如何获取图像。小班?如果我需要澄清我的问题,请告诉我。我得到的错误列表不是Map类型的子类型
我目前正在构建一个应用程序,通过医疗api读取数据,我试图解析JSON。 我为用户创建了一个模型类: 这是我试图阅读的JSON信息: 但是我得到的错误列表不是Map类型的子类型 如何修复此错误?
当我尝试解码json时,它会给我错误。 我的模范班 功能在我使用它的地方 json数据
我正面临着一个奇怪的颤动错误。我使用json序列化。 这是我的密码 我的web api发送的数据如下 这是数组的数组。 生成错误的代码是 它给出的错误 JSON数据这里是JSON数据格式的屏幕截图
我是颤振开发方面的新手。我犯了一个错误 列表不是“Iterable”类型的子类型 到目前为止,我已经做到了。 模范班 缅因州班内 } 我试图从2天开始解决这个问题。 请帮忙,谢谢。 这里是JSON响应,您可以检查链接
out webserver将此结果返回为: 我用这个结构类来解析它 现在,当我从服务器成功获取数据时,我无法返回该数据,例如: 对于这行代码: 返回tring.map 我得到这个错误: 类型列表不是类型转换中的类型映射的子类型