flutter网络请求json

男娘i 2022-05-22 05:57 300阅读 0赞
  1. import 'dart:async';
  2. import 'dart:convert';
  3. import 'package:http/http.dart' as http;
  4. import 'package:flutter/material.dart';
  5. //使用网络请求json
  6. class HomePage extends StatefulWidget {
  7. @override
  8. _HomePageState createState() => _HomePageState();
  9. }
  10. class _HomePageState extends State<HomePage> {
  11. final String url = "https://swapi.co/api/people";
  12. List data;
  13. @override
  14. void initState() {
  15. super.initState();
  16. this.getJsonData();
  17. }
  18. Future<String> getJsonData() async{
  19. var response = await http.get(
  20. //encode the url
  21. Uri.encodeFull(url),
  22. //only accept json response
  23. headers: {
  24. "Accept": "application/json"}
  25. );
  26. print(response.body);
  27. setState(() {
  28. // ignore: deprecated_member_use
  29. var convertDataToJson = JSON.decode(response.body);
  30. data= convertDataToJson['results'];
  31. });
  32. return "Success";
  33. }
  34. @override
  35. Widget build(BuildContext context) {
  36. return Scaffold(
  37. appBar: AppBar(
  38. title: Text("Retrieve Json via Http get"),
  39. ),
  40. body: ListView.builder(
  41. itemCount: data == null? 0:data.length,
  42. itemBuilder: (BuildContext context,int index){
  43. return Container(
  44. child: Center(
  45. child: Center(
  46. child: Column(
  47. crossAxisAlignment: CrossAxisAlignment.stretch,
  48. children: <Widget>[
  49. Card(
  50. child: Container(
  51. child: Text(data[index]['name']),
  52. padding: EdgeInsets.all(20.0),
  53. ),
  54. )
  55. ],
  56. ),
  57. ),
  58. ),
  59. );
  60. },
  61. ),
  62. );
  63. }
  64. }

发表评论

表情:
评论列表 (有 0 条评论,300人围观)

还没有评论,来说两句吧...

相关阅读