The goal is trying different flutter features, and apply CI/CD using github actions.
The latest version of the APP is available to try at https://hbgit.github.io/flutter_a_z/
- Some NOTES and steps are done to create and execute this project
$ mkdir hello_app
$ cd hello_app
$ flutter create .- Creating .github/worflows/dart.yml
- Setting up the https://codecov.io
- In .github/worflows/dart.yml , the APK generation adopts to generate a draft release
- Deploy the APK in the github pages, the site will be published as yourusername.github.io/repo-name
- Setting up SSH GitHub to deploy the APP
- Check out https://github.com/JamesIves/github-pages-deploy-action using ssh
- Create a new SSH key pair for your repository. WARNNING: Do not set a passphrase https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#generating-a-new-ssh-key
- Copy the contents of the public key (.pub file) to a new repository deploy key and check the box to "Allow write access.":
$ xclip -sel clip < ~/.ssh/deploy_key.pub- Add a secret (named SSH_PRIVATE_KEY) to the repository containing the entire contents of the private key, Using
$ xclip -sel clip < ~/.ssh/deploy_key - Setting github pages
- In order for your site to be published, a Jekyll theme must be chosen, even if you don't use Jekyll at all
- Go to https://github.com/yourusername/repo-name/settings -> GitHub Pages -> Change theme
-
The goal of this APP is showing random phrases in the screen according to the button is clicked
-
The source code is available at: https://github.com/hbgit/flutter_a_z/tree/feature_phrase
-
Some NOTES about this APP:
- Plugin adopted in the Visual Code IDE: Flutter (Dart-Code); Awesome Flutter Snippets (Nash Ramdial); and Dart (Dart-Code)
- We try: Image, RaisedButton, and dart:math
-
Update the test
-
Overview of the APP:
-
The goal of this APP has created the game Jokenpo, i.e., rock, paper, and scissors
-
The source code is available at: https://github.com/hbgit/flutter_a_z/tree/feature_jokenpo_app
-
Some NOTES about this APP:
- We adopt internal packages; AppBar on setState; and GestureDetector
-
Overview of the APP:
| Start | WIN | LOST | Same Result |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
-
The goal of this APP is to decide the best choice analyzing the price of the Gasoline and Alcohol
-
The source code is available at: https://github.com/hbgit/flutter_a_z/tree/feature_gasvsalco
-
Some NOTES about this APP:
- We adopt internal packages; SingleChildScrollView; and TextField;
- We add unit test on test/unit_calcopt_test.dart
- Noting that Dart tests are written using the flutter_test package's API, named with the suffix _test.dart, and placed inside the test/ subdirectory of the package under test.
-
Overview of the APP:
| Start | Alcohol | Gasoline | Incorrect Input |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
-
The goal of this APP is to automatically choose one side of a coin
-
The source code is available at: https://github.com/hbgit/flutter_a_z/tree/feature_gamecoin
-
Some NOTES about this APP:
- We adopt internal packages; and routes with MaterialPageRoute
-
Overview of the APP:
| Start | Result 1 | Result 2 |
|---|---|---|
![]() |
![]() |
![]() |
-
The goal of this APP is to automatically show the price of the Bitcoin adopting an API.
-
The source code is available at: https://github.com/hbgit/flutter_a_z/tree/feature_bitcoinprice
-
Some NOTES about this APP:
- We adopt internal packages; http.Response; async Functions; json.decode; and RoundedLoadingButton.
-
Overview of the APP:
| Start | Result 1 | Result 2 |
|---|---|---|
![]() |
![]() |
![]() |
-
The goal of this APP is to adopt and simulate the YouTube APP based on a specific Playlist from YouTube service.
-
The source code is available at: https://github.com/hbgit/flutter_a_z/tree/feature_youtubeclone
-
In this APP was adopted:
- Youtube API (https://developers.google.com/youtube/v3/docs/search/list)
- Internal packages
- http.Response
- async Functions
- json.decode
- url_launcher/url_launcher
- flutter/foundation
- flutter_youtube/flutter_youtube
- ListView
- BoxDecoration
- NetworkImage
- SearchDelegate
-
Overview of the APP:
| Start | Hot | Highest Views | A-Z by Title | Search |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
-
The goal of this APP is to organize a Todo List with multiple tasks with the option to: create, update, and delete a task.
-
The source code is available at: https://github.com/hbgit/flutter_a_z/tree/feature_tasklist
-
In this APP was adopted:
- Internal packages
- async Functions
- json.decode
- path_provider/path_provider
- dart:io
- Dismissible
- SnackBar
- CheckboxListTile
- FloatingActionButton
- Slider
-
Overview of the APP:
| Start | Screen 0 | Screen 1 | Screen 2 | Screen 3 |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| Screen 4 | Screen 5 | Screen 6 | Screen 7 | Screen 8 |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
-
The goal of this APP is to generate a playlist adopting song from a given URL, and it provides a Player Music for each song. In this APP to simulate a web service, it's adopted a JSON file from APP assets.
-
The source code is available at: https://github.com/hbgit/flutter_a_z/tree/feature_music_player
-
In this APP was adopted:
- interal packages
- audioplayer/audioplayer
- wave/wave
- flutter/services
- StreamSubscription
- initState and dispose
- async functions
- SingleChildScrollView
- ConstrainedBox
- Expanded
- Slider
- CircularProgressIndicator
- Card
-
Overview of the APP:
| Start | Screen 1 | Screen 2 | Screen 3 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
-
The goal of this APP is to generate a note system that allows the user to save a note with a title, description, and date. In the APP is possible to create, update, and remove notes.
-
The source code is available at: https://github.com/hbgit/flutter_a_z/tree/feature_notes
-
For while I prefer disabled the testing and codecov service, focusing on the developed APP.
-
In this APP was adopted:
- interal packages
- intl/intl
- intl/date_symbol_data_local
- AlertDialog
- FlatButton
- SnackBar
- Card
- GestureDetector
- FloatingActionButton
- path/path
- NoteControll._internal() : singleton design pattern
- sqflite/sqflite: 1.3.0+1, Web is not supported, one solution is https://pub.dev/packages/moor
-
Overview of the APP:
| Start | Screen 0 | Screen 1 |
|---|---|---|
![]() |
![]() |
![]() |
| Screen 2 | Screen 3 | Screen 4 |
|---|---|---|
![]() |
![]() |
![]() |
-
The goal of this APP is to allow the user to send messages using 1 to M, where all APP user can send messages one each other
-
The source code is available at https://github.com/hbgit/flutter_a_z/tree/feature_whatsclone
-
This is not working on Web since flutter packages limitation adopted
-
How setting up the project on Firebase (https://console.firebase.google.com/):
- In the App Project go to android/app/src/main/AndroidManifest.xml
- Get the package name, e.g., com.hbgit.flutter_a_z
- Provide the SHA-1, check out https://developers.google.com/android/guides/client-auth (note in the password type android)
- Add the google JSON on android/app
- Add firebase SDK to the project, check out https://firebase.google.com/docs/android/setup?authuser=0
- Go to android/build.gradle and copy/paste the classpath in the last line of section dependencies
- In the app level, go to android/app/build.gradle and then add the plugin cmd as in the documentation
- Go to https://pub.dev to get the package name
- Possible ERROR Migrate Android X, check out https://developer.android.com/jetpack/androidx/migrate
- Go to android/gradle.properties, and then check out if it has: android.useAndroidX=true and android.enableJetifier=true
- Possible ERROR, install an app because size files, check out https://developer.android.com/studio/build/multidex
- Go to android/app/build.gradle and add in the defaultConfig section multiDexEnabled true
- Go to firebase in Database and setting up Cloud Firestore
- Now is just write the flutter code :)
- Plus: setting up to web firebase/flutterfire#1688 and also add "firebase_auth_web:" on pubspec.yaml
-
In this APP was adopted:
- interal packages
- firebase_core: 0.4.4+3
- firebase_auth: 0.16.0
- firebase_auth_web:
- firebase_storage: 3.1.5
- cloud_firestore: 0.13.5
- image_picker: ^0.6.7
- cached_network_image: 2.2.0+1
- call WidgetsFlutterBinding.ensureInitialized();
- RouteGenerator.generateRoute
-
Overview of the APP:
| Start | Screen 0 | Screen 1 | Screen 2 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Screen 3 | Screen 4 | Screen 5 | Screen 6 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |














































