This repository is to used to maintain some templates that can form the basis of a Flutter application. These templates may be opinionated in how to structure applications. The intent is that these templates could help other developers get started sooner in the absence of being able specify templates to use to the flutter create
command.
NOTE: updates may be done to existing templates. As this isn't a published package, if you want to stay notified of updates then it's suggested that you watch the GitHub repository.
Templates can be found in the following folders
material_bottomnavigation_provider_mobx
- a template for a material design application with bottom navigation. Uses provider and MobX for state managementmaterial_navigationdrawer_provider_mobx
- a template for a material design application with a navigation drawer. Selecting a destination updates the content displayed without triggering navigation. Uses provider and MobX for state managementmaterial_navigationdrawerroutes_provider_mobx
- a template for a material design application with a navigation drawer. Selecting a destination will trigger navigating to the destination with a back button so that the user can go back to the home page. Uses provider and MobX for state management
When creating a brand new Flutter application, there are few steps that developers may do
- specify the organisation
- specify the name of the app
- specify the languages used for the Android and iOS projects
Note that out of the box, Flutter will combine the organisation and name of the app to set that as the bundle identifier of your Android and iOS application. It is still possible to do all of the above with a template. The following steps are required
- Clone this repository
- Pick the folder/template you'd like to use and copy it to the location of your choice. Let's assume for this example that you have picked the
material_bottomnavigation_provider_mobx
folder and copied it to sit withinprojects
folder - Go to the
projects
folder (i.e. where you've copied the template to). Rename the folder to match the name of your application e.g.counter
. This is crucial as Flutter's tooling actually uses this as portion of the bundle identifier that represents your application's name - Open the
counter
application in your IDE of choice, search for all instances ofmaterial_bottomnavigation_provider_mobx
and replace it withcounter
(the name of your application) - From the root folder of your
counter
application. Run the following command
flutter create --org <organisation> -a <android_language> -i <ios_language> .
where organisation>
is your organisation in reverse domain name notation. For example, given the crossingthestreams.io
domain, the organisation would be specified as io.crossingthestreams
. <android_language>
is either java
or kotlin
and <ios_language>
is either objc
or swift
. The tooling will generate a widget_test.dart
file within the test
folder that can be deleted. Successfully executing all of the steps would create an application with the desired application name, bundle identifier and create the appropriate Android and iOS project files. From there you should be able to run the application. You can then the pubspec.yaml
to your liking (e.g. to update the dependencies). Note that the templates have unit tests, widget tests and integration tests included. Therefore, if you make changes then these tests may need to be updated to stop them from failing.
As the templates do not specify the version of the dependencies to pull in, developers may want to explicitly do so, or run the following command to upgrade them to the latest versions whilst avoiding conflicts
flutter pub upgrade
It's suggested that developers also run the following command once the dependencies have been updated to ensure that generated code (e.g. by MobX's code generator) is also updated
flutter pub run build_runner build --delete-conflicting-outputs
Feel free to submit PRs to share templates that you feel would be useful to others. A short checklist to things to do are
- Add information to the template's readme
- Include unit tests, widget test and integration tests
- Update the
.cirrus.yml
file to include your template - Keep the original .gitignore file generated by the
flutter create
command. This would ensure that when a template is used to create an application, the relevent Android and iOS projects can by checked into source control - Ensure that the steps described above for creating an application from a template works with the template you're submitting
The material_bottomnavigation_provider_mobx
folder can be referred to in order mimic what has been done there when submitting a new template