json - 我想在 Flutter 中使用动态 JSON 数据创建 gridView,如屏幕截图所示。谢谢

标签 json flutter dart

我想使用下面的 JSON 数据创建 GridView,如屏幕截图所示。 如果有人使用下面给出的 JSON 数据创建 GridView 并解释背后的逻辑,我将不胜感激。我是 flutter 开发的新手。谢谢。!

{
"count": 7,
"result": [
    {
        "iconId": 1,
        "id": 1,
        "name": "Kitchen",
        "timestamp": 1586951631
    },
    {
        "iconId": 2,
        "id": 2,
        "name": "android",
        "timestamp": 1586951646
    },
    {
        "iconId": 3,
        "id": 3,
        "name": "mobile",
        "timestamp": 1586951654
    },
    {
        "iconId": 4,
        "id": 4,
        "name": "bathroom",
        "timestamp": 1586951665
    },
    {
        "iconId": 5,
        "id": 5,
        "name": "parking",
        "timestamp": 1586974393
    },
    {
        "iconId": 6,
        "id": 6,
        "name": "theatre",
        "timestamp": 1586974429
    },
    {
        "iconId": 7,
        "id": 7,
        "name": "bedroom",
        "timestamp": 1586974457
    }
  ]
}

enter image description here

最佳答案

使用转换库将 json 字符串转换为 Dart 对象并按照您想要的方式使用它,这是您的示例:

import 'package:flutter/material.dart';
import 'dart:convert';

//add this library to get data from the internet
import 'package:http/http.dart' as http;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _jsonString =
      '{ "count": 7, "result": [ { "iconId": 1, "id": 1, "name": "Kitchen", "timestamp": 1586951631 }, { "iconId": 2, "id": 2, "name": "android", "timestamp": 1586951646 }, { "iconId": 3, "id": 3, "name": "mobile", "timestamp": 1586951654 }, { "iconId": 4, "id": 4, "name": "bathroom", "timestamp": 1586951665 }, { "iconId": 5, "id": 5, "name": "parking", "timestamp": 1586974393 }, { "iconId": 6, "id": 6, "name": "theatre", "timestamp": 1586974429 }, { "iconId": 7, "id": 7, "name": "bedroom", "timestamp": 1586974457 } ] }';

  Future<String> _getDataFromWeb() async {
    http.Response response = await http.get("your-url.com");

    if (response.statusCode == 200) {
      // If you are sure that your web service has json string, return it directly
      return response.body;
    } else {
      // create a fake response against any stuation that the data couldn't fetch from the web
      return '{ "count": 7, "result": []}';
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Your App Title"),
      ),
      body: FutureBuilder<String>(
        future: _getDataFromWeb(),
        builder: (context, snapshot) {
          Map jsonMap = json.decode(snapshot.data);

          return GridView.builder(
            gridDelegate:
                SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
            itemCount: jsonMap['count'],
            itemBuilder: (BuildContext c, int i) {
              Map resultItem = jsonMap['result'][i];

              return Card(
                child: Center(child: Text("${resultItem['name']}")),
              );
            },
          );
        },
      ),
    );
  }
}

关于json - 我想在 Flutter 中使用动态 JSON 数据创建 gridView,如屏幕截图所示。谢谢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61236031/

相关文章:

java - MAC地址的数据类型?

android - Flutter 在另一个类中调用 setState() 更新 UI

Flutter Future<bool> 与 bool 类型

android - Flutter/cloud-firestore "Task is already complete"异常

file - 如何将Base64字符串保存到文件并使用Flutter查看

php - Google Places Web Service API 在不同的服务器上返回不同的结果?

javascript - Grunt 未加载

名称和数字 Dart 的正则表达式

c# - 反序列化自定义数据类型实现 IConvertible 的问题

dart - 在 flutter 中使用 google map 时出现错误