0

我有一个StreamBuilder每秒给我一个 JSON。我有一个名为“fichajes”的类,它们的属性是:id, worker_id, date, hour, type_checking_id.

JSON是:

{
  "fichajes": [
    {
      "id": 310,
      "worker_id": 1,
      "date": "30/09/2019",
      "hour": "11:07:04",
      "type_checking_id": 2,
      "zone_checking_id": null
    }
  ]
}

我想获得一个 json 对象,以便稍后在表格中使用它。

StreamBuilder(
      initialData: Center(
        child: new CircularProgressIndicator(),
      ),
      stream: _someData(),
      builder: (context, AsyncSnapshot snapshot) {
        if (snapshot.connectionState != ConnectionState.done ||
            snapshot.hasError) {
          return ListView.builder(
            itemCount: 1,
            itemBuilder: (BuildContext context, int index) {
              final Fichajes fichaje = snapshot.data;
              return ListTile(
                title: Text("titulo" + fichaje.fichajes[index].id.toString()),
                subtitle: Text("subtitulo"),
              );
            },
          );
        } else {
          return Center(child: LinearProgressIndicator());
        }
      },
    );

Stream<Widget> _someData() async* {
    yield* Stream.periodic(
      Duration(seconds: 1),
      (int a) {

        //save into a general variable "allInfo" response from json
        loadUser(); 

        print("_someData");
        return getInfo();
      },
    );
  }

getInfo() {
    return new Container(
      child: new Text(allInfo.toString()),
    );
}
4

2 回答 2

2

你可以像这样转换你的输出:

 Map<dynamic, dynamic> map = snapshot.data.snapshot.value;

如果你想使用 podo 类,那么你应该看看 quicktype

于 2019-09-30T12:21:17.657 回答
0

您首先要使用dart:convert核心库中的json帮助程序反序列化 JSON。然后,您可以访问数据或创建一个类以使用工厂构造函数进一步反序列化,以将其解码为更易于使用的静态类型类。decodedJsonObject['fichajes'][index]['id']decodedJsonObject.fromJson(Map<String, dynamic> json)

于 2019-09-30T23:50:58.607 回答