这是我扑扑的代码
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('JSON ListView in Flutter')
),
body: JsonListView(),
),
);
}
}
class Fruitdata {
String id;
String fName;
Fruitdata({
this.id,
this.fName,
});
factory Fruitdata.fromJson(Map<String, dynamic> json) {
return Fruitdata(
id: json['id'],
fName: json['name'],
// fName: json['fruit_name'],
);
}
}
class JsonListView extends StatefulWidget {
JsonListViewWidget createState() => JsonListViewWidget();
}
class JsonListViewWidget extends State<JsonListView> {
final String uri = 'http://sha-way.freeweb.pk/index4.php';
//final String uri = 'https://flutter-examples.000webhostapp.com/fruites_list_file.php';
Future<List<Fruitdata>> fetchFruits() async {
var response = await http.get(uri);
if (response.statusCode == 200) {
final items = json.decode(response.body).cast<Map<String, dynamic>>();
List<Fruitdata> listOfFruits = items.map<Fruitdata>((json) {
return Fruitdata.fromJson(json);
}).toList();
return listOfFruits;
}
else {
throw Exception('Failed to load data.');
}
}
@override
Widget build(BuildContext context) {
return FutureBuilder<List<Fruitdata>>(
future: fetchFruits(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Center(
child: CircularProgressIndicator()
);
return ListView(
children: snapshot.data
.map((data) => ListTile(
title: Text(data.fName),
onTap: (){print(data.fName);},
))
.toList(),
);
},
);
}
}
我认为我制作的json非常完美...您可以在代码中注意到我对示例进行了注释... // fName:json ['fruit_name'],并且此//最终字符串uri =' https:// flutter- examples.000webhostapp.com/fruites_list_file.php ';
现在它从我有评论的那部分中检索数据很好,而不是从我在代码中的JSON中检索数据。我注意到的事情可能是因为示例链接包含https://,而我的代码中包含http://是我做错了这件事,还是还有其他需要帮助的地方使我感到困惑
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。