Giter Site home page Giter Site logo

burhanrashid52 / whattodo Goto Github PK

View Code? Open in Web Editor NEW
1.1K 41.0 269.0 923 KB

A Simple Todo app design in Flutter to keep track of your task on daily basis. Its build on BLoC Pattern. You can add a project, labels, and due-date to your task also you can sort your task on the basis of project, label, and dates

License: Apache License 2.0

Java 0.40% Objective-C 0.55% Dart 97.09% Swift 1.03% Ruby 0.93%
flutter dart android ios task sqflite whattodo projects labels

whattodo's Introduction

WhatTodo

GitHub Actions License API Uplabs FlutterWeekly AwesomeAndroid Buy Me A Coffee

logo

Life can feel overwhelming. But it doesn’t have to.

A Simple To-do app design in flutter to keep track of your task on daily basis. You can add project, labels and due-date to your tasks

Features

  • Build on BLoC Architecture Pattern
  • Add Projects by specifying a unique color to it
  • Add Labels by specifying a unique color to it
  • Add Task by defining its priority
  • Swipe to delete or complete the task
  • Sorting Task
  • Works offline using Sqflite database

BLoC Diagram

This diagram show case the dependencies to create a feature specific BLoCs.The HomeBloc is independent and used as communication channel between its child widgets.

Widget-BLoC Relationship

This diagram shows that how each widget uses BLoCs.

Project

The app already has a preloaded Inbox project. You can add more projects by clicking add project button on SideDrawer. From material color list you can specify any single color to the project

You can assign only one project to a single task

Labels

You can add multiple labels by clicking add Labels button on SideDrawer. From material color list you can specify any single color to the label

You can assign multiple labels to a single task

Task

You can add task with multiple attributes. You must assign a project to task if not than by default it will be added in Inbox project. Task can have zero or more to label assing to it

Swipe the Task

You can delete a task by swiping left-to-right or your can mark task as completed by swiping right-to-left. You can also undo a completed task by clicking on options menu where it shows the list of all completed tasks there you can swipe right-to-left to undo the completed task

Sorting

You can sort your task with date i.e today and next 7 days and also acoording to project and labels

How to contribute?

What's next?

  • Editable Project,label and Task
  • Deletable Project and Label
  • Comment/Description in Task
  • Reminder with notification

Questions?πŸ€”

Hit me on twitter Twitter Medium Facebook

Credits

License

Copyright 2020 Burhanuddin Rashid

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

whattodo's People

Contributors

aslamthachapalli avatar ayushbherwani1998 avatar burhanrashid52 avatar jigneshworld avatar marvinissacul avatar minatekyo avatar monkeywithacupcake avatar narivo avatar nitishk72 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

whattodo's Issues

More Edge cases test

Integration Test (Flutter Driver)

  • Add Task Screen with different project and label selection

Widget Test

  • Add Task Screen with different project and label selection
  • Project and label dialog test.
  • Completed Screen with Dismissable Row.
  • Side Drawer Test.

Unit Test

  • TaskBloc
  • AddTaskBloc

new logo whartodo

Hello , I want to contribute to your project, I want to create a new logo and icon for this application with material design style and it's free. Do you want it?

Exchangeable backends

Hi @burhanrashid52,

I'm currently in the process of switching from Todoist to org-mode as project management solution.
One thing where org-mode is a bit behind is a good-looking UI for Android.
There's orgzly and it does its job, but it's far from being intuitive.
Now I'm wondering if it would be possible to use WhatTodo as a frontend to org-mode.
In order to do that, one would have to hide the current *Database classes behind abstract classes and provide another implementation of those classes using org-mode (potentially based on code from orgro).

I'm not a 100% how much effort this would be and if I want to invest the effort, but I wanted to ask in advance if this is a direction you could see the project evolving to, i.e. WhatTodo being really nice UI for different "storage mechanisms", with a built-in DB being the default.

When run "flutter run" error!

Exception in thread "main" java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.(ZipFile.java:219)
at java.util.zip.ZipFile.(ZipFile.java:149)
at java.util.zip.ZipFile.(ZipFile.java:163)
at org.gradle.wrapper.Install.unzip(Install.java:214)
at org.gradle.wrapper.Install.access$600(Install.java:27)
at org.gradle.wrapper.Install$1.call(Install.java:74)
at org.gradle.wrapper.Install$1.call(Install.java:48)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)".

Edit and Delete Label and Projects

  • Allow and ability to delete projects and labels. This will show a warning message before deleting. This will also delete tasks by cascade operation.
  • Rename label name and color.
  • Rename project name and color

want to contribute

Hello, Myself Siyona Lodha!
I wanted to contribute to your project for my college open source lab.
Can you please assign me some tasks and give me an opportunity to become a contributor?

Thank you.

Search and add location to task feature

Now user can add a location to the task and see the details of the location by clicking on the task map icon. This location attribute will be optional to add.
We will use google map library for this feature.
Currently, it will work in android and ios only

Add Widget Test

  • Task Row
  • Project Row
  • Label Row,
  • Dismissable Row in Task List.
  • Add Task Screen.

Unhandled exception logged when adding a new project

Steps to reproduce:
Open side panel
Expand Projects sublist
Click "Add Project" list entry
Create a new project

The console log displays:
E/flutter (26554): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter (26554): Bad state: Cannot add new events after calling close
E/flutter (26554): #0 _BroadcastStreamController.add (dart:async/broadcast_stream_controller.dart:253:24)
E/flutter (26554): #1 _StreamSinkWrapper.add (dart:async/stream_controller.dart:858:13)
E/flutter (26554): #2 ProjectBloc._loadProjects. (package:flutter_app/pages/projects/project_bloc.dart:34:31)
E/flutter (26554): #3 _RootZone.runUnary (dart:async/zone.dart:1379:54)
E/flutter (26554): #4 _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
E/flutter (26554): #5 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
E/flutter (26554): #6 Future._propagateToListeners (dart:async/future_impl.dart:671:32)
E/flutter (26554): #7 Future._complete (dart:async/future_impl.dart:476:7)
E/flutter (26554): #8 _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
E/flutter (26554): #9 _AsyncAwaitCompleter.complete (dart:async/runtime/libasync_patch.dart:28:18)
E/flutter (26554): #10 _completeOnAsyncReturn (dart:async/runtime/libasync_patch.dart:295:13)
E/flutter (26554): #11 ProjectDB.getProjects (package:flutter_app/pages/projects/project_db.dart)
E/flutter (26554):
E/flutter (26554): #12 ProjectBloc._loadProjects (package:flutter_app/pages/projects/project_bloc.dart:33:16)
E/flutter (26554): #13 ProjectBloc.refresh (package:flutter_app/pages/projects/project_bloc.dart:50:5)
E/flutter (26554): #14 ProjectExpansionTileWidget.buildProjects. (package:flutter_app/pages/projects/project_widget.dart:61:21)
E/flutter (26554):
E/flutter (26554): #15 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)

I'm studying this project to learn more about Flutter and using the BLoC pattern. Looking at the onTap() handler (which is somehow causing this exception), it's more complicated than I expected. Can you add some comments about why it's creating a second ProjectBloc object and why it's calling projectBloc.refresh(). IMHO, the point of Flutter and the BLoC pattern was to avoid things like refresh().

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.