Skip to content

Commit

Permalink
Rename todo object to todo model
Browse files Browse the repository at this point in the history
  • Loading branch information
Prince2347X committed Jan 28, 2024
1 parent 1ef7d01 commit d1266e0
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 18 deletions.
2 changes: 1 addition & 1 deletion lib/components/todo.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:todo/objects/todo.dart';

class TodoTile extends StatefulWidget {
final TodoObject todo;
final TodoModel todo;
const TodoTile({super.key, required this.todo});

@override
Expand Down
13 changes: 8 additions & 5 deletions lib/components/todo_list_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,17 @@ class TodoListView extends StatefulWidget {
class _TodoListViewState extends State<TodoListView> {
User user = FirebaseAuth.instance.currentUser!;

Stream<List<TodoObject>> _todoStream() {
Stream<List<TodoModel>> _todoStream() {
return FirebaseFirestore.instance
.collection('todos')
.orderBy(widget.isCompleted ? 'modifiedAt' : 'createdAt', descending: true)
.orderBy(widget.isCompleted ? 'modifiedAt' : 'createdAt',
descending: true)
.where('userId', isEqualTo: user.uid)
.where('isCompleted', isEqualTo: widget.isCompleted)
.snapshots()
.map((snapshot) => snapshot.docs.map((doc) => TodoObject.fromJson(doc.data())).toList());
.map((snapshot) => snapshot.docs
.map((doc) => TodoModel.fromJson(doc.data()))
.toList());
}

@override
Expand All @@ -46,13 +49,13 @@ class _TodoListViewState extends State<TodoListView> {
),
),
Expanded(
child: StreamBuilder<List<TodoObject>>(
child: StreamBuilder<List<TodoModel>>(
stream: _todoStream(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final todos = snapshot.data!;
return ListView(
children: todos.map((TodoObject todo) {
children: todos.map((TodoModel todo) {
return TodoTile(todo: todo);
}).toList(),
);
Expand Down
11 changes: 6 additions & 5 deletions lib/objects/todo.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:cloud_firestore/cloud_firestore.dart';

import 'package:todo/services/firestore.dart';

class TodoObject {
class TodoModel {
DateTime createdAt;
String id;
bool _isCompleted;
Expand All @@ -11,7 +11,7 @@ class TodoObject {
String title;
String userId;

TodoObject({
TodoModel({
required this.createdAt,
required this.id,
required isCompleted,
Expand All @@ -28,13 +28,14 @@ class TodoObject {
FirestoreServices.instance.updateTodo(this);
}

factory TodoObject.fromJson(Map<String, dynamic> json) {
return TodoObject(
factory TodoModel.fromJson(Map<String, dynamic> json) {
return TodoModel(
createdAt: (json['createdAt'] as Timestamp).toDate(),
id: json['id'],
isCompleted: json['isCompleted'],
modifiedAt: (json['modifiedAt'] as Timestamp).toDate(),
subtasks: json['subtasks'] != null ? List<String>.from(json['subtasks']) : null,
subtasks:
json['subtasks'] != null ? List<String>.from(json['subtasks']) : null,
title: json['title'],
userId: json['userId'],
);
Expand Down
11 changes: 7 additions & 4 deletions lib/screens/todos.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ class TodosScreen extends StatefulWidget {
State<TodosScreen> createState() => _TodosScreenState();
}

class _TodosScreenState extends State<TodosScreen> with TickerProviderStateMixin {
class _TodosScreenState extends State<TodosScreen>
with TickerProviderStateMixin {
late TextEditingController _todoTextController;

@override
Expand Down Expand Up @@ -165,7 +166,8 @@ class _TodosScreenState extends State<TodosScreen> with TickerProviderStateMixin
child: TextField(
autofocus: true,
controller: _todoTextController,
decoration: const InputDecoration(hintText: 'New todo'),
decoration:
const InputDecoration(hintText: 'New todo'),
),
),
),
Expand All @@ -184,7 +186,7 @@ class _TodosScreenState extends State<TodosScreen> with TickerProviderStateMixin
);
return;
}
final todoObject = TodoObject(
final todoObject = TodoModel(
createdAt: DateTime.now(),
id: '',
isCompleted: false,
Expand Down Expand Up @@ -213,7 +215,8 @@ class _TodosScreenState extends State<TodosScreen> with TickerProviderStateMixin
size: 36,
),
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
floatingActionButtonLocation:
FloatingActionButtonLocation.centerDocked,
),
),
);
Expand Down
6 changes: 3 additions & 3 deletions lib/services/firestore.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@ class FirestoreServices {
return _instance!;
}

void createTodo(TodoObject todo) async {
void createTodo(TodoModel todo) async {
final newDocRef = _todosCollection.doc();
final newDocData = todo.toJson();
newDocData['id'] = newDocRef.id;
await newDocRef.set(newDocData);
}

void updateTodo(TodoObject todo) async {
void updateTodo(TodoModel todo) async {
Map<String, dynamic> updatedData = todo.toJson();
updatedData['modifiedAt'] = DateTime.now();
await _todosCollection.doc(todo.id).update(updatedData);
}

void deleteTodo(TodoObject todo) async {
void deleteTodo(TodoModel todo) async {
await _todosCollection.doc(todo.id).delete();
}
}

0 comments on commit d1266e0

Please sign in to comment.