web-dev-qa-db-ja.com

Flutterエラー-失敗したアサーション:行213 pos 15: 'data!= null':ファイアストアからデータをフェッチするときに真ではありません

Androidアプリでflutterを使用しています。Firestoreからドキュメントを取得してウィジェットを介して画面に表示しようとしています。これが私のコードです...

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,
        ],
      ),

    );

  }
}

しかし、このウィジェットを実行しているときはいつでも、次のエラーが発生します...

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

何が問題なのか理解できません。

5
Suresh

ここにテキストのコンストラクタがあります

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);

最終的な文字列データ。

ご覧のとおり、データは必須フィールドであり、nullにすることはできません。

データがnullの可能性がある場合は、以下のコードを使用できます

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