CCCPaste

Firebase Dart

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:test_project/model/todo.dart';
import 'package:test_project/firebase/sign_in.dart';

final FirebaseFirestore database = FirebaseFirestore.instance;
final FirebaseAuth auth = FirebaseAuth.instance;

var todoSize = 1;
var todoItemSize = 1;
List firebaseTodos = [];

void countTodos() {
  var docs = database.collection('users').doc(currentLoggedIn.email).get();
  docs.then((snapshot) {
    todoSize = snapshot.data()['todo_count'];
  });
}

void countTodoItem(int index) {
  var docs = database.collection('users').doc(currentLoggedIn.email)
                     .collection('todo').doc('todo$index').get();
  docs.then((snapshot) => todoItemSize = snapshot.data()['items']);
}

Future loadTodoFromFirebase() async {
  var docs = database.collection('users').doc(currentLoggedIn.email)
                      .collection('todo').get();
  docs.then((QuerySnapshot snapshot) {
    snapshot.docs.forEach((element) {
      firebaseTodos.add(Todo(element.data()['title'], element.data()['description']));
    });
  });
}

void updateTodoCount(int amount) {
  countTodos();
  database.collection('users').doc(currentLoggedIn.email).update({
    'todo_count': todoSize + 1
  });
}

void saveTodo(String title, String description) async {
  database.collection('users').doc(currentLoggedIn.email)
          .collection('todo').doc('todo$todoSize').set({
            'title': title,
            'description': description,
          });
  database.collection('users').doc(currentLoggedIn.email)
        .collection('todo').doc('todo$todoSize')
        .collection('item').doc('item0').set({
          'item_name': 'Example Item',
          'done': false
        });
  updateTodoCount(1);
}

void saveTodoItem(int index, String name) async {
  print("index");
  print(index);
  database.collection('users').doc(currentLoggedIn.email)
          .collection('todo').doc('todo$index')
          .collection('item').doc('item$todoItemSize').set({
            'item_name': name,
            'done': false,
          });
}