Giter VIP home page Giter VIP logo

listify's Introduction

Pub Version


A flutter todo/task listing example app with advanced state management using Momentum library. Simple on the outside but powerful in the inside. This app has a very simple look and feel. Just todo app but the state management with momentum makes it very powerful. This turned out as a convenient app because of persistent state + persistent navigation (continue where you left off).

  • Persistent State - all state is persisted on the device. If you terminate the app and open it again, the states are retained including user inputs.
  • Persistent Navigation - navigation between pages is persisted using momentum's powerful built-in router service. If you terminate the app and open it again, the page where you left off will be shown, and pressing the system back button navigates you to the correct previous page means navigation history is also persisted.
  • Equatable - skip rebuilds if nothing actually changes. Theming is also optimized with the help of equatable.
  • Undo/Redo - undo/redo all inputs.
  • Create Copy - create a copy of a list.
  • Edit/Delete - in view mode, you can edit or delete a list.
  • Reorderable lists - both lists and input items can be reordered.
  • Search - simple search feature on the home page.
  • App settings - app options that are easily saved using momentum's persistent feature.
  • Draft inputs - when the back button is pressed the inputs will be saved as a draft.

Components

  • CurrentListController<CurrentListModel> - this is where the current list state is being stored. This is used in the View List page.
  • ListController<ListModel> - this is where the list data is validated for duplicates during adding of list, search list, Home page will display all list created, etc.
  • InputController<InputModel> - used in Add New List page and the Edit Existing List. The inputs are handled and validated in this component. Undo/Redo feature is also handled here.
  • SettingsController<SettingsModel> - used in Settings page and also in some other pages to auto-apply settings.
  • ThemeController<ThemeModel> - this is where custom manual theming is handled. Because I'm not too familiar with flutter's theme object structure and props name I decided to do it manually. This is used on every page. This is only injected in the root MyApp() to automatically apply the theme instead of restarting the app.

Gallery

In this image the process was like this:

  • Open the app (Home Page).
  • Go to Add New List page.
  • Input some data.
  • Close and Terminate on task view.
  • Reopen the app again.

And magic happens! All the inputs were retained and not just that but also including the page where you left off. Navigation history is also persisted which means pressing the system back button will navigate you to the correct previous page.

persistent preview

dark mode

listify's People

Contributors

xamantra avatar

Stargazers

 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

listify's Issues

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.