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
何が問題なのか理解できません。
ここにテキストのコンストラクタがあります
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"),