【发布时间】:2021-11-20 15:03:49
【问题描述】:
谁能帮我解决这个问题。
我目前正在构建一个从 MySQl 读取数据的应用程序。
我无法使用颤振 http 请求从 json 获取数据,因为它得到了这个错误:列表不是 Map
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:http/http.dart' show get;
import 'dart:convert';
void main() => runApp(
MyApp(
txtscr: obtenirTxtscr()
)
);
class Txtscr {
final String id;
final String content;
Txtscr({
required this.id,
required this.content,
});
factory Txtscr.fromJson(Map<String, dynamic> jsonData) {
return Txtscr(
id: jsonData['id'],
content: jsonData['content'],
);
}
}
Future<Txtscr> obtenirTxtscr() async {
final jsonEndpoint = Uri.parse('https://www.domaine.com/txtscr.php');
final response = await get(jsonEndpoint);
if(response.statusCode == 200) {
return Txtscr.fromJson(json.decode(response.body));
} else {
throw Exception("Error al obtenir el JSON");}}
class MyApp extends StatelessWidget {
final Future<Txtscr> txtscr;
MyApp({Key? key, required this.txtscr}): super(key: key);
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
title: "JSON URL",
theme: ThemeData(
primarySwatch: Colors.red,
),
home: Scaffold(
appBar: AppBar(
title: Text("Text Json"),
),
body: Center(
child: FutureBuilder<Txtscr>(
future: txtscr,
builder: (context, snapshot) {
if(snapshot.hasData) {
return Text(
"ID: " + snapshot.data!.id + "\n" +
"Content: " + snapshot.data!.content
);
} else if(snapshot.hasError) {
return Text("${snapshot.error}");
}
return CircularProgressIndicator();
},
),),),
);
}
}
如何纠正这个错误?
【问题讨论】:
-
你能贴出 print(response.body) 在 obtenirTxtscr() 函数中给出的内容吗?
-
这是 JSON 文件的一部分:[ { "id": "62", "content": "Saison de spectacles" } ]