app_spec.md
We have created this short spec to help you create consistent todo apps. Consistency is key to form an "apples to apples" comparison between different approaches.
The vanilla implementation should be used as the reference app and as a base when implementing a new todo app. Before implementing your own, we recommend that you interact with some of the other apps to see how they're built and how they behave. If something is unclear or could be improved, let us know.
Your app should look and behave exactly like the template and the other examples.
All examples must include a README describing the general implementation, any frameworks used, and the build process if required. Please check the vanilla implementation for an example.
dartfmt.analysis_options.yaml from the vanilla implementation and ensure there are no analysis errorsThe home contains two Tabs: the List of Todos and Stats about the Todos.
TextField at the top of the screen. The task TextField should be focused when the "Add New Todo" screen opens. In order to add a new todo, the task field must not be empty. Make sure to .trim() the input and then check that it's not empty before creating a new todo. If the task contains no text, show an error.TextField must exist to store notes related to the todo.TextField at the top of the screen. The task TextField should NOT be focused when the "Edit New Todo" screen opens. In order to make changes to the todo, the task field must not be empty. Make sure to .trim() the input and then check that it's not empty before updating the todo. If the task contains no text, show an error.TextField below the task.There are three levels of data persistence:
Synchronization between layers is hard and depends on the case so it's out of the scope for the samples. The chosen sync implementation is very simple:
Note that after the first request to the network, it's never hit again. In addition, in these examples, it's totally fine to use a Mock web service as a demonstration without the complication of setting up / talking to a real service.
Please include tests with your app! How easy it is to test an architecture is an important consideration when choosing which approach will work best for your project or team.
You do not need to write an exhaustive suite of Widget tests, but if the architecture lends itself to easy widget testing, please include a demonstration!
All samples should pass the integration test suite. Please see the integration_tests folder for more information, and check out the test_driver folder in an existing example as a reference.
/ - Takes you to the main tabs screen/addTodo - Takes you to the add todo screenTo get to the Details and Edit screens, you can either use a named route or push a new Route directly with the Navigator.