Refactored the task service to support the selection of an event, renamed to [CurrentSelectionService]. Created the event screen
This commit is contained in:
parent
7511e3c519
commit
7abee74b73
6 changed files with 52 additions and 25 deletions
6
lib/src/blocs/event_bloc.dart
Normal file
6
lib/src/blocs/event_bloc.dart
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
import 'dart:async';
|
||||
|
||||
import '../resources/firestore_provider.dart';
|
||||
import '../resources/firebase_storage_provider.dart';
|
||||
|
||||
class EventBloc {}
|
||||
|
|
@ -5,7 +5,7 @@ import 'package:rxdart/rxdart.dart';
|
|||
import '../models/task_model.dart';
|
||||
import '../resources/firestore_provider.dart';
|
||||
import '../services/auth_service.dart';
|
||||
import '../services/current_task_service.dart';
|
||||
import '../services/current_selection_service.dart';
|
||||
|
||||
export '../services/auth_service.dart' show FirebaseUser;
|
||||
|
||||
|
|
@ -20,7 +20,7 @@ class HomeBloc {
|
|||
final FirestoreProvider _repository = firestoreProvider;
|
||||
|
||||
/// An instance of the current task service.
|
||||
final CurrentTaskService _taskService = currentTaskService;
|
||||
final CurrentSelectionService _selectionService = currentSelectionService;
|
||||
|
||||
/// A subject of list of task model.
|
||||
final _tasks = BehaviorSubject<List<TaskModel>>();
|
||||
|
|
@ -60,6 +60,7 @@ class HomeBloc {
|
|||
});
|
||||
}
|
||||
|
||||
// TODO: Include the priority in the filtering.
|
||||
/// Returns a stream transformer that filters the task with the text from
|
||||
/// the search box.
|
||||
StreamTransformer<List<TaskModel>, List<TaskModel>> searchBoxTransformer() {
|
||||
|
|
@ -114,7 +115,7 @@ class HomeBloc {
|
|||
|
||||
/// Sets the global current task.
|
||||
void updateCurrentTask(TaskModel task) {
|
||||
_taskService.setTask(task);
|
||||
_selectionService.updateSelectedTask(task);
|
||||
}
|
||||
|
||||
/// Updates the serach box text.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import '../models/task_model.dart';
|
|||
import '../models/user_model.dart';
|
||||
import '../resources/firestore_provider.dart';
|
||||
import '../services/auth_service.dart';
|
||||
import '../services/current_task_service.dart';
|
||||
import '../services/current_selection_service.dart';
|
||||
|
||||
/// Business logic component that manages the state for the task screen.
|
||||
class TaskBloc extends Object with Validators {
|
||||
|
|
@ -18,7 +18,7 @@ class TaskBloc extends Object with Validators {
|
|||
final FirestoreProvider _firestore = firestoreProvider;
|
||||
|
||||
/// An instance of the current task service.
|
||||
final CurrentTaskService _taskService = currentTaskService;
|
||||
final CurrentSelectionService _selectionService = currentSelectionService;
|
||||
|
||||
/// A subject of user model.
|
||||
final _user = BehaviorSubject<UserModel>();
|
||||
|
|
@ -33,7 +33,7 @@ class TaskBloc extends Object with Validators {
|
|||
TaskPriority priority = TaskPriority.high;
|
||||
|
||||
/// The text of the current global task.
|
||||
String get textInitialValue => _taskService.task.text;
|
||||
String get textInitialValue => _selectionService.task.text;
|
||||
|
||||
//Stream getters.
|
||||
/// An observable of the current user model.
|
||||
|
|
@ -72,7 +72,7 @@ class TaskBloc extends Object with Validators {
|
|||
Future<void> submit(isEdit) {
|
||||
if (isEdit) {
|
||||
return _firestore.updateTask(
|
||||
_taskService.task.id,
|
||||
_selectionService.task.id,
|
||||
text: _taskText.value,
|
||||
priority: TaskModel.ecodedPriority(priority),
|
||||
);
|
||||
|
|
@ -97,7 +97,7 @@ class TaskBloc extends Object with Validators {
|
|||
/// Grabs the data from the current global task and pipes it to the local
|
||||
/// streams.
|
||||
void populateWithCurrentTask() {
|
||||
TaskModel currentTask = _taskService.task;
|
||||
TaskModel currentTask = _selectionService.task;
|
||||
if (currentTask != null) {
|
||||
changeEventName(currentTask.event);
|
||||
changeTaskText(currentTask.text);
|
||||
|
|
|
|||
5
lib/src/screens/event_screen.dart
Normal file
5
lib/src/screens/event_screen.dart
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
class EventScreen extends StatelessWidget {
|
||||
Widget build(BuildContext context) {}
|
||||
}
|
||||
32
lib/src/services/current_selection_service.dart
Normal file
32
lib/src/services/current_selection_service.dart
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import '../models/event_model.dart';
|
||||
import '../models/task_model.dart';
|
||||
|
||||
/// A service that keeps track of the current user selection.
|
||||
///
|
||||
/// When editing a task or when navigating to an event screen, the new screens
|
||||
/// can grab the user selection for this service.
|
||||
class CurrentSelectionService {
|
||||
/// The current selected task.
|
||||
TaskModel _selectedTask;
|
||||
|
||||
/// The current selected event.
|
||||
EventModel _selectedEvent;
|
||||
|
||||
/// The current selected task.
|
||||
TaskModel get task => _selectedTask;
|
||||
|
||||
/// The current selected event.
|
||||
EventModel get event => _selectedEvent;
|
||||
|
||||
/// Updates the current selected task.
|
||||
void updateSelectedTask(TaskModel newTask) {
|
||||
_selectedTask = newTask;
|
||||
}
|
||||
|
||||
// Updates the current selected event.
|
||||
void updateSelectedEvent(EventModel newEvent) {
|
||||
_selectedEvent = newEvent;
|
||||
}
|
||||
}
|
||||
|
||||
final currentSelectionService = CurrentSelectionService();
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
import '../models/task_model.dart';
|
||||
|
||||
/// A service that keeps track of the current selected task.
|
||||
class CurrentTaskService {
|
||||
/// The current selected task.
|
||||
TaskModel _currentTask;
|
||||
|
||||
/// The current selected task.
|
||||
TaskModel get task => _currentTask;
|
||||
|
||||
/// Sets the current selected task.
|
||||
void setTask(TaskModel newTask) {
|
||||
_currentTask = newTask;
|
||||
}
|
||||
}
|
||||
|
||||
final currentTaskService = CurrentTaskService();
|
||||
Loading…
Add table
Add a link
Reference in a new issue