Skip to content

Instantly share code, notes, and snippets.

@csells
Last active December 12, 2021 16:43
Show Gist options
  • Select an option

  • Save csells/cf880582fae9f6c2a908c1500ffb2b6b to your computer and use it in GitHub Desktop.

Select an option

Save csells/cf880582fae9f6c2a908c1500ffb2b6b to your computer and use it in GitHub Desktop.

Revisions

  1. csells revised this gist Dec 8, 2021. 1 changed file with 0 additions and 8 deletions.
    8 changes: 0 additions & 8 deletions firestore_listview.dart
    Original file line number Diff line number Diff line change
    @@ -1,11 +1,3 @@
    import 'package:cloud_firestore/cloud_firestore.dart';
    import 'package:flutter/material.dart';
    import 'package:flutterfire_ui/firestore.dart';

    void main() {
    runApp(MaterialApp(home: UserListView()));
    }

    class UserListView extends StatelessWidget {
    UserListView({Key? key}) : super(key: key);

  2. csells created this gist Dec 8, 2021.
    58 changes: 58 additions & 0 deletions firestore_listview.dart
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,58 @@
    import 'package:cloud_firestore/cloud_firestore.dart';
    import 'package:flutter/material.dart';
    import 'package:flutterfire_ui/firestore.dart';

    void main() {
    runApp(MaterialApp(home: UserListView()));
    }

    class UserListView extends StatelessWidget {
    UserListView({Key? key}) : super(key: key);

    // live Firestore query
    final usersCollection = FirebaseFirestore.instance.collection('users');

    @override
    Widget build(BuildContext context) => Scaffold(
    appBar: AppBar(title: const Text('Contacts')),
    body: FirestoreListView<Map>(
    query: usersCollection,
    pageSize: 15,
    primary: true,
    padding: const EdgeInsets.all(8),
    itemBuilder: (context, snapshot) {
    final user = snapshot.data();

    return Column(
    children: [
    Row(
    children: [
    CircleAvatar(
    child: Text((user['firstName'] ?? 'Unknown')[0]),
    ),
    const SizedBox(width: 8),
    Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    mainAxisAlignment: MainAxisAlignment.center,
    mainAxisSize: MainAxisSize.min,
    children: [
    Text(
    '${user['firstName'] ?? 'unknown'} '
    '${user['lastName'] ?? 'unknown'}',
    style: Theme.of(context).textTheme.subtitle1,
    ),
    Text(
    user['number'] ?? 'unknown',
    style: Theme.of(context).textTheme.caption,
    ),
    ],
    ),
    ],
    ),
    const Divider(),
    ],
    );
    },
    ),
    );
    }