Я новичок во Flutter.
Я пытаюсь отобразить данные из базы данных Firebase в Listview в моем приложении. У меня есть список в базе данных Firebase, где я сохраняю информацию о пользователях, которая является адресом электронной почты и именем, я хочу, чтобы мое приложение отображало эти данные в виде списка, используя просмотр списка, однако я пробовал много учебников и не смог этого сделать.
См. Ниже ссылку на скриншот
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class FeedScreen extends StatelessWidget {
static final String id = 'feed_screen';
final String currentUserId;
FeedScreen({this.currentUserId});
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
// Firestore.instance.collection('mountains').document()
// .setData({ 'title': 'Mount Baker', 'type': 'volcano' });
super.initState();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Home"),
),
body: new BookList(),
floatingActionButton: new FloatingActionButton(
child: new Icon(Icons.add),
onPressed: () {
Firestore.instance.collection('users').document().setData(
{
'name': '',
'email': '',
},
);
},
),
);
}
}
class BookList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('users').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return new Text('Loading...');
default:
return new ListView(
children:
snapshot.data.documents.map((DocumentSnapshot document) {
return new ListTile(
title: new Text(document['name']),
subtitle: new Text(document['email']),
);
}).toList(),
);
}
},
);
}
}