处理AVRO模式中的空记录

时间:2020-04-06 13:25:07

标签: avro

我有一个问题,我的记录json可以为空。如何处理Avro模式中的空记录?给出的文档用于我想获取空记录的空属性。

1 个答案:

答案 0 :(得分:0)

记录类型也是如此。您可以将类型与null合并。

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:foci_dev/model/next_matches.dart';
import 'package:foci_dev/pages/new_match_page.dart';
import 'package:foci_dev/service/database_service.dart';
import 'package:foci_dev/ui/delete_card.dart';

import 'main_page.dart';

class DeletePage extends StatefulWidget {
  @override
  _DeletePageState createState() => _DeletePageState();
  final DatabaseService databaseService;

  DeletePage(this.databaseService);
}

class _DeletePageState extends State<DeletePage> {
  DatabaseService _databaseService = DatabaseService(Firestore.instance);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.grey[800],
      appBar: AppBar(
        backgroundColor: Colors.grey[900],
        centerTitle: true,
        title: const Text(
          'Foci-admin',
          style: TextStyle(color: Colors.white60),
        ),
        leading: Padding(
          padding: const EdgeInsets.all(8.0),
          child: IconButton(
            icon: Icon(
              Icons.edit,
              color: Colors.white60,
            ),
            onPressed: () {
              Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) => NewMatch(this._databaseService),
                  ));
            },
            tooltip: 'Meccsek hozzáadása',
          ),
        ),
        actions: <Widget>[
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: IconButton(
              icon: Icon(
                Icons.home,
                color: Colors.white60,
              ),
              onPressed: () {
                Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => MainPage(),
                    ));
              },
              tooltip: 'Eredmény',
            ),
          )
        ],
      ),
      body: StreamBuilder(
        stream: Firestore.instance
            .collection("upcomings")
            .orderBy('createdAt')
            .snapshots(),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          return snapshot.hasData
              ? Container(
                  color: Colors.grey[850],
                  child: ListView.builder(
                      itemCount: snapshot.data.documents.length,
                      itemBuilder: (BuildContext context, int index) {
                        DocumentSnapshot upcomings =
                            snapshot.data.documents[index];
                        UpcomingMatch upcomingMatch = UpcomingMatch(
                            upcomings["upcomingTeam1"],
                            upcomings["upcomingTeam2"]);
                        return DeleteCard(upcomingMatch,
                            snapshot.data.documents[index].documentId);
                      }),
                )
              : Center(
                  child: CircularProgressIndicator(),
                );
        },
      ),
    );
  }
}