[英]How to get the json data from a php file on the server to the flutter app
我的大学服务器上托管了一个php文件,当我在服务器上运行此文件时,它运行得很好。 运行链接位于http://www.alkadhum-col.edu.iq/Teachers%20Activities/get.php的 php文件后,我可以获取json数据,但是当我无法获取时,我尝试了该操作在应用程序屏幕上颤抖。
首先,我试图更改该网址不起作用。 其次,我尝试将json对象转换为.toString(),但也无法正常工作。
import 'package:flutter/material.dart';
import 'package:http/http.dart' show get;
import 'dart:convert';
class Post {
String name;
String msg;
String day;
String date;
Post({this.name, this.msg, this.day, this.date});
factory Post.fromJson(Map<String, dynamic> json) {
return Post(
name: json['name'].toString(),
msg: json['msg'].toString(),
day: json['day'].toString(),
date: json['date'].toString(),
);
}
}
class CustomListView extends StatelessWidget {
List teachers = [];
CustomListView(this.teachers);
@override
Widget build(BuildContext context) {
return (
ListView.builder(
itemCount: teachers.length,
itemBuilder: (BuildContext context, int index) {
return createviewItem(teachers[index], context);
},
)
);
}
Widget createviewItem(Post teachers, BuildContext context) {
return ListTile(
title: new Card(
child: new Container(
decoration: BoxDecoration(border: Border.all(color: Colors.lightBlue)),
padding: EdgeInsets.all(20.0),
margin: EdgeInsets.all(20.0),
child: Column(children: <Widget>[
new Text(teachers.name),
new Text(teachers.msg),
new Text(teachers.day),
new Text(teachers.date)
],),
)
)
);
}
}
Future<List<Post>> downloadJSON() async {
final jsonEndpoint = "http://www.alkadhum-col.edu.iq/Teachers%20Activities/get.php";
final response = await get(jsonEndpoint);
if (response.statusCode == 200) {
List teachers = json.decode(response.body);
return teachers.map(
(teacher) => new Post.fromJson(teacher)
).toList();
}
else {
throw Exception("Unable to get JSON data");
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
theme: new ThemeData(
primarySwatch: Colors.deepOrange,
),
home: new Scaffold(
appBar: new AppBar(title: const Text('Flutter and PHP')),
body: new Center(
child: new FutureBuilder<List<Post>>(
future: downloadJSON(),
builder: (context, snapshot) {
if (snapshot.hasData) {
List<Post> teachers = snapshot.data;
return new CustomListView(teachers);
} else if (snapshot.hasError) {
return Text('${snapshot.error}');
}
//return a circular progress indicator.
return new CircularProgressIndicator();
},
),
),
),
);
}
}
void main() {
runApp(MyApp());
}
我收到了格式异常:意外字符(在字符115)和列表中的某些数据不是字符串形式的。
问题在于您的数据不是JSON数据。
[
{
"name": "م.م علي ستار باراني",
"msg": "امتحان مادة قواعد البيانات اول جابترين ",
"day": "السبت",
"date": "2019-06-20"
}
][
{
"name": "م. امجد عباس التميمي",
"msg": "امتحان مادة هندسة البرامجيات اول فصلين",
"day": "الاحد",
"date": "2019-06-21"
},
{
"name": "م.م علي ستار باراني",
"msg": "امتحان مادة قواعد البيانات اول جابترين ",
"day": "السبت",
"date": "2019-06-20"
}
]
问题出在以下两个括号中:
} ][ {
JSON代码应如下所示。
[
{
"name": "م.م علي ستار باراني",
"msg": "امتحان مادة قواعد البيانات اول جابترين ",
"day": "السبت",
"date": "2019-06-20"
},
{
"name": "م. امجد عباس التميمي",
"msg": "امتحان مادة هندسة البرامجيات اول فصلين",
"day": "الاحد",
"date": "2019-06-21"
},
{
"name": "م.م علي ستار باراني",
"msg": "امتحان مادة قواعد البيانات اول جابترين ",
"day": "السبت",
"date": "2019-06-20"
}
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.