web-dev-qa-db-fra.com

Erreur Flutter - Échec de l'assertion: ligne 213 pos 15: 'data! = Null': n'est pas vrai au moment de la récupération des données du magasin de pompiers

Travailler sur Android utilisant le flutter. Essayer de récupérer des documents de Firestore et de les afficher à l'écran via un widget. Voici mon code ...

import 'Dart:async';
import 'Dart:io';
import 'package:flutter/material.Dart';
import 'package:shared_preferences/shared_preferences.Dart';
import 'package:image_picker/image_picker.Dart';
import 'package:firebase_storage/firebase_storage.Dart';
import 'package:cloud_firestore/cloud_firestore.Dart';
import 'package:http/http.Dart' as http;
import 'Dart:convert';

class HomePage extends StatefulWidget {
  @override
  HomePageState createState() => new HomePageState();
}

class HomePageState extends State<HomePage> {

  @override
  void initState() {
    super.initState();
  }



  @override
  Widget build(BuildContext context) {

    Widget userTimeline = new Container(
        margin: const EdgeInsets.only(top: 30.0, right: 20.0, left: 20.0),
        child: new Row(
          children: <Widget>[
            new Expanded(
                child: new Column(
              children: <Widget>[
                new StreamBuilder<QuerySnapshot>(
                  stream: Firestore.instance.collection('tripsDocs').snapshots(),
                  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
                    if (!snapshot.hasData) return new Text('Loading...');

                    new ListView(
                      children: snapshot.data.documents.map((DocumentSnapshot document) {
                        new ListTile(
                          title: document['docTitle'] != null? new Text(document['docTitle']) : new Text("Hello"),
                          subtitle: new Text('Suresh'),
                        );
                      }).toList(),
                    );
                  },
                )
              ],
            ))
          ],
        ));

    return new Scaffold(

      body: new ListView(
        children: <Widget>[
          userTimeline,
        ],
      ),

    );

  }
}

Mais, chaque fois que j'exécute ce widget, je reçois l'erreur suivante ...

'package:flutter/src/widgets/text.Dart': Failed assertion: line 213 pos 15: 'data != null': is not true

Impossible de comprendre ce qui ne va pas.

5
Suresh

Voici le constructeur de Text

const Text(this.data, {
    Key key,
    this.style,
    this.textAlign,
    this.textDirection,
    this.softWrap,
    this.overflow,
    this.textScaleFactor,
    this.maxLines,
  }) : assert(data != null),
       textSpan = null,
       super(key: key);

Avec

données de chaîne finales;

Comme vous pouvez le voir, les données sont un champ obligatoire et elles ne doivent pas être nulles.

Vous pouvez utiliser le code ci-dessous au cas où vos données pourraient être nulles

title: document['docTitle'] != null? new Text(document['docTitle']) : new Text("Hello"),
1
Phuc Tran