开发者社区> 问答> 正文

JSON无法在FLUTTER中检索数据

这是我扑扑的代码

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://是我做错了这件事,还是还有其他需要帮助的地方使我感到困惑

展开
收起
社区秘书 2019-11-27 16:26:21 773 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
基于flutter的产品应用实践 立即下载
《Flutter in action》 立即下载
闲鱼《Flutter 技术解析与实战》 立即下载