gpt4 book ai didi

android - 为什么我的MySql数据库数据没有显示在应用程序中?

转载 作者:行者123 更新时间:2023-12-03 03:32:12 25 4
gpt4 key购买 nike

使用PHP创建了一个API,用于从MySql数据库中获取数据,但我的数据没有显示在我的flutter应用程序中。我为JSON文件创建了模型类,并将其称为文件。
我需要在我的应用程序页面Homescreen.dart中显示数据,但数据无法获取。
这是我的JSON文件

[
{
"Id": "1",
"Name": "Cafe La Vista",
"Address": "Zindabazar",
"Longitude": "91.878357",
"Latitude": "24.896719"
},
{
"Id": "2",
"Name": "Peepers",
"Address": "Zindabazar",
"Longitude": "91.871094",
"Latitude": "24.895376"
}
]

这是我的模型类,用于从mysql提取数据


import 'dart:convert';

List<restaurant_list> restaurantsFromJson(String str) =>
List<restaurant_list>.from(
json.decode(str).map((x) => restaurant_list.fromJson(x)));

String restaurantsToJson(List<restaurant_list> data) =>
json.encode(List<dynamic>.from(data.map((x) => x.toJson())));

class restaurant_list {
restaurant_list({
this.id,
this.name,
this.address,
this.longitude,
this.latitude,
});

String id;
String name;
String address;
String longitude;
String latitude;

factory restaurant_list.fromJson(Map<String, dynamic> json) =>
restaurant_list(
id: json["Id"],
name: json["Name"],
address: json["Address"],
longitude: json["Longitude"],
latitude: json["Latitude"],
);

Map<String, dynamic> toJson() => {
"Id": id,
"Name": name,
"Address": address,
"Longitude": longitude,
"Latitude": latitude,
};
}

在此类中称为API
import 'restaurant_list.dart';
import 'package:http/http.dart' as http;

Future<List<restaurant_list>> fetchRestaurants() async {
String url = "https://sylrest.000webhostapp.com/conn.php";
final response = await http.get(url);
return restaurantsFromJson(response.body);
}
应该显示数据的主页

import 'package:flutter/material.dart';
import 'restaurant_list.dart';
import 'restaurant_list_api.dart';

class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => new _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('HomeScreen'),
),
body: Container(
child: FutureBuilder(
future: fetchRestaurants(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data.length,
shrinkWrap: true,
itemBuilder: (BuildContext context, index) {
restaurant_list restaurant = snapshot.data[index];
return Text('${restaurant.name}');
});
}
return CircularProgressIndicator();
},
)));
}
}

最佳答案

您需要解码要拟合的json数据。
我在这里添加了一些代码:

Future<List<restaurant_list>> fetchRestaurants() async {
String url = "https://sylrest.000webhostapp.com/conn.php";
final response = await http.get(url);
return json.decode(response.body);
}

关于android - 为什么我的MySql数据库数据没有显示在应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63308361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com