Quick Start
Come iniziare con flutter e best practice per l'impostazione di un progetto.
Parti di codice riutilizzabili
Elenco di widgets e video che spiegano il loro utilizzo
Elenco di link utili per Flutter. Tutorials e progetti completi.
Parte prima dell'articolo:
1000 lines of code (separa meglio il codice)
Separating widgets to functions instead of classes (scrivi classi invece di funzioni)
Not writing unit tests (Scrivi dei test ogni volta che crei dei componenti, se non riesci a scrivere il test vuol dire che il componente non è scritto bene...)
Roadmap
Creazione di uno screen separato da main
Navigazione tra le pagine (Routes)
Creazione di un widget riutilizzabile
Creazione di un modello (model)
Creazione di un provider (gestione dello stato)
Utilizzo di Future
Utilizzo di Stream (serie di eventi asincroni)
Tutorials:
Push and Upload your Flutter Project to GitHub to store your source code within a version control system and to share it with your team.
La seguente soluzioni potrebbe essere interessante. Occorre capire qual'è il numero di beacon e il posizionamento per ottenere una posizione con errore accettabile.
https://github.com/ZainCheema/Indoor-Positioning-System-using-BLE-and-Flutter
For every App
Google fonts
Icon Generator
Splash Screen
Block orientation
About Screen
Info Screen with slider
Login (advanced)
GetX
Navigation
Snackbar
Dialog
Access data from one instance to another
State management
Easy Key/Value Storage
Easy Internationalization
Easy Validators
The Flutter GetX ecosystem: https://medium.com/flutter-community/the-flutter-getx-ecosystem-state-management-881c7235511d
5 Useful generic packages
Image picker
Local notifications:
URL Launcher
Share
WebView
Offline
Cache Manager (with Custom cache manager to store data in a non tmp folder)
Image cache manager
Shared preferences
Top 5 for Advanced App (Indoor/Outdoor/Museums, tracks etc...)
Maps
Player Audio (video)
Beacons (IoT)
QRCode /Barcode reader
Augmented Reality (https://www.youtube.com/watch?v=A56gVrDAXbU Flutter + Unity 3D)
https://pub.dev/packages/flutter_unity_widget (Unity and Flutter Widget ARFoundation)
https://medium.com/potato/building-with-flutter-unity-ar-experience-toolkit-6aaf17dbb725
Deploy App to Test Flight (iOS):
Code Generator
https://fluttershapemaker.com/ Per costruire dei "percorsi" in modo visuale.
Tutorial shape maker: https://www.youtube.com/watch?v=AnKgtKxRLX4
Visual code generator: https://designer.jetspike.com/#/
Another code generator for unions/pattern-matching/copy. https://pub.dev/packages/freezed
https://github.com/bizz84/flutter_example_apps
Flutter Task Management: https://youtu.be/4q_inOhnos8
Nuova null safety: https://medium.com/swlh/convert-your-flutter-app-to-enjoy-null-safety-69632aa62d7a
Starter architecture flutter firebase: https://codewithandrea.com/videos/2020-02-10-starter-architecture-flutter-firebase/
Architecture Amplify AWS for flutter:
Model: Convert JSON to Swift, C#, TypeScript, Objective-C, Go, Java, C++ and more
https://medium.com/flutterdevs/flutter-json-to-dart-class-in-one-click-ba6d6b5f47a9 (plugin for Microsoft code)
State management:
states_rebuilder: Più semplici degli altri state management, non c'è boilerplate e utilizza classi dart semplici
https://flutter.dev/docs/development/data-and-backend/state-mgmt
https://medium.com/flutter-community/creating-services-to-do-the-work-in-your-flutter-app-93d6c4aa7697 (Get_it package)
Link alla pagina interna con elenco passi per la creazione di un servizio riutilizzabile (Get_it package)
Provider: https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple
BLoC - Redux comparison: https://www.didierboelens.com/2019/04/bloc-scopedmodel-redux-comparison/
MobX:
https://mobx.netlify.app/concepts (Più semplice degli altri, utilizza un generatore di codice per avere del codice più leggibile)
https://medium.com/flutter-community/handling-api-calls-using-mobx-in-flutter-a355cf91605c (esempio completo su medium)
Background processing:
JSON serialization/deserialization:
Navigation:
Navigation con stack multipli: https://youtu.be/3PdUaidHc-E?t=176
Deep Linking: navigazione da un sito web o da push notification per accedere ad una specifica area all'interno dell'app: https://pub.dev/packages/uni_links
Link from URL, Mail: https://pub.dev/packages/flutter_linkify
Local storage: https://flutter.dev/docs/cookbook/persistence/key-value
SQLite: utile per lavorare con un grosso quantitativo di dati strutturati: https://flutter.dev/docs/cookbook/persistence/sqlite
Hive: https://pub.dev/packages/hive (sempre SQL)
Lettura e scrittura file (file system): https://flutter.dev/docs/cookbook/persistence/reading-writing-files
Push notification con Firebase:
Local notification:
Logging: https://medium.com/flutter-community/a-guide-to-setting-up-better-logging-in-flutter-3db8bab2000e
Painter - disegnare grafica su Canvas:
Help pagina iniziale, onboarging o overlay
Package Collection: Tired of doing all the work on your own and just want some help dealing with lists, maps, and sets in your app? package:collection lets you check if two collections contain other collections, implement a priority queue, “Do maths”, and more!
Offline: moor enhanced offline storage
SDUI: generate user interface from server using JSON
Step by step guide (Flutter intro package):
Developers can choose between Android Studio / IntelliJ and Visual Studio Code for their Flutter IDE as all three are very well supported on Mac, PC, Linux, and Chromebook. Building, device deployment, debugging, and performance profiling, can all be achieved within these IDEs, as well as from the command line. For native iOS platform development / deployment, Xcode on a Mac is required.
Online
DartPad: https://dartpad.dev/
Testing
Unit Test: https://flutter.dev/docs/testing#unit-tests
Widget Test: https://flutter.dev/docs/testing#widget-tests
Integration Test: https://flutter.dev/docs/testing#integration-tests
Mock Web server: A self-contained (ie. no web requests go outside the app) demonstration version of the app is also possible using this mock web server, if a way to switch between web server endpoints is provided. For instance you could switch between a mock, test environment and pre-production test environment in the debug build of your Enterprise app. https://pub.dev/packages/mock_web_server
Preview App (different screen sizes):
Continuous Integration / Continuous Delivery:
GitHub Actions (Compilazione online)
https://betterprogramming.pub/ci-cd-for-flutter-apps-using-github-actions-b833f8f7aac
Code Magic (Compilazione online)
Fledge: https://medium.com/zero-equals-false/cicd-for-flutter-fdc07fe52abd
VelocityX: https://pub.dev/packages/velocity_x
Collezione di widget pronti all'uso: https://pub.dev/packages/getwidget
Photo View (possibile utilizzo anche come gallery):
Layout rules !!!! important: https://medium.com/flutter-community/flutter-the-advanced-layout-rule-even-beginners-must-know-edc9516d1a2
InApp Web View: https://pub.dev/documentation/flutter_inappwebview/latest/index.html
Splash Screen: https://flutter.dev/docs/development/ui/advanced/splash-screen
Android - Material Widgets: https://flutter.dev/docs/development/ui/widgets/material
iOS - Cupertino Widgets: https://flutter.dev/docs/development/ui/widgets/cupertino
Animations: https://flutter.dev/docs/development/ui/animations
Flare Vector animations: https://rive.app/, https://pub.dev/packages/flare_flutter
Page transitions: https://flutter.dev/docs/cookbook/animation/page-route-animation
Paging / infinite scrolling list views:
Image loading / caching library: https://pub.dev/packages/cached_network_image
Google Maps e Apple Maps: https://pub.dev/packages/flutter_maps
Mappe Vettoriali MapBox: https://pub.dev/packages/mapbox_gl
Flutter MapBox Integration: Complete Guide with Example https://dhruvnakum.xyz/flutter-mapbox-integration-complete-guide-with-example
Webview (beta): https://pub.dev/packages/webview_flutter
Internazionalizzazione: https://flutter.dev/docs/development/accessibility-and-localization/internationalization
Accessibilità: https://flutter.dev/docs/development/accessibility-and-localization/accessibility
Grafici:
Selezione dinamica Temi: https://medium.com/swlh/flutter-dynamic-themes-in-3-lines-c3b375f292e3
Responsive:
Row and Column: https://medium.com/@greg.perry/decode-row-column-8b88ad2d758c
Neumorphism Payment App UI - Speed Coding: https://m.youtube.com/watch?v=HkU447RWCXs
Neumorphism Soft UI Design In Flutter: https://www.youtube.com/watch?v=PsvvJSl37Bc&app=desktop
Neumorphic design package: https://pub.dev/packages/neumorphic
Neumorphic design with flutter: https://medium.com/flutter-community/neumorphic-designs-in-flutter-eab9a4de2059
Flutter Launcher Icons: Creazione automatica delle icone per l'app - https://pub.dev/packages/flutter_launcher_icons
SpinKit: Spinner, loaders - https://pub.dev/packages/flutter_spinkit
Audio player: https://pub.dev/packages/audioplayer (può funzionare anche assieme al servizio audio service per background audio, vedi sotto)
Video Player:
https://pub.dev/packages/video_player (core component)
https://pub.flutter-io.cn/packages/chewie (widget che utilizza video_player, ma con controllo play del video tramite pulsanti, slidebar etc... )
Effetto sfoglia pagina: https://pub.dev/packages/page_turn
Layout cheat sheet: https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e
Rive -Animazioni: https://rive.app/
Interessante, per creare assistenti e chat-bot: https://github.com/aniketambore/assistant_spirit
List view ordinabile: https://youtu.be/0bRv3mNCj8o
Esempio app completa con interessante UI: https://github.com/abuanwar072/Production-Ready-Doctor-Consultant-App-UI-
HTML Editor: https://pub.dev/packages/html_editor_enhanced
Camera: https://flutter.dev/docs/cookbook/plugins/picture-using-camera
Autenticazione biometrica (incluso fingerprint e Face ID): https://pub.dev/packages/local_auth
Accelerometer: https://pub.dev/packages/sensors
NFC: https://pub.dev/packages/nfc_in_flutter (Note that only a subset of NFC tags is supported, and NFC application usage is highly restricted on the iOS platform by Apple design, not specifically due to Flutter
Video Player (Chewie Tutorial)
Riconoscimento immagini (Tensor Flow)
Riconoscimento vocale (Picovoice)
AudioPlayer / Recorder
HTTPS: https://flutter.dev/docs/cookbook/networking/fetch-data
Simple Auth: https://pub.dev/packages/simple_auth_flutter
Azure, Amazon, Dropbox, Facebook, Github, google, Instagram, LinkedIn, Microsoft Live Connect
Qualsiasi server con OAuth2/Basic Auth
Amazon ha inoltre il suo SDK per Cognito: https://pub.dev/packages/amazon_cognito_identity_dart
SSL certificate pinning: https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning (plugin: https://pub.dev/packages/ssl_pinning_plugin)
Difficulty of reverse engineering: Flutter Dart code compiles down to ARM binary code so it is slightly more challenging to reverse engineer than Android byte code. This can be further “enhanced” by using a technique such as code obfuscation.
Secure Storage: provides a way to securely store small amounts of key / value information on the device. https://pub.dev/packages/flutter_secure_storage
faker package - crea API per test
Flutter community Widgets
Analytics:
Crash Reporting:
Sentry Library: https://flutter.dev/docs/cookbook/maintenance/error-reporting
Firebase crashalitics
Generate and scan QRCodes
Access to personal contact list
Share details with social media
Send SMS and receive SMS for one time passcodes:
Make in-app payments
Play audio music video (media player):
Video/Audio Manipulation
Read user’s health information
Machine learning on device and in the cloud.
File Picker
Puzzle Game
Accesso a Google Drive:
Upload File (Firebase):
ARCore (realtà aumentata)
https://medium.com/krootl/arcore-sceneform-video-scale-n-rotation-362a3b5de4dc
https://proandroiddev.com/building-arcore-apps-using-sceneform-part-1-b9e57d1057e6
https://proandroiddev.com/arcore-cupcakes-3-understanding-vector3-93ec6bd08071
https://proandroiddev.com/arcore-cupcakes-4-understanding-quaternion-rotations-f90703f3966e
https://medium.com/@ashmikattel/arcore-in-flutter-f0115fbdbbc2
Filtri AR (like snapchat)
Developing packages:
i18n - simple json files, one for each language that you want to support:
Preferences (options key value pair)
Provider for state management:
Http Requests:
https://pub.dev/packages/http
Cached Network images:
Flutter Map - A Dart implementation of Leaflet for Flutter apps.
Local Messages:
Barcode Scanner:
Beacon iBeacon (Android/iOS) simple to use:
Render HTML Text:
Checking connection status - Offline:
Flutter Cache Manager - Offline:
Cache for DIO package - Offline
Serial connection (Android) useful for Arduino Projects:
MQTT client - for Arduino (WiFi/MKR1010) & Other IoT Projects:
Cloud firestore:
Tesla (Control and monitor Tesla Products in Dart):
Configuration package:
BLE (Flutter library that handles BLE operations for multiple devices):
Audio Services - audio in background o quando lo schermo è spento:
Best Visual Studio code extension:
https://ricardo-castellanos-herreros.medium.com/10-best-visual-studio-code-extensions-for-flutter-development-c94a4e9a7a05
Approximate how your app looks and performs on another device.
https://medium.com/flutter-community/inappwebview-the-real-power-of-webviews-in-flutter-c6d52374209d
https://medium.com/flutter/how-to-debug-layout-issues-with-the-flutter-inspector-87460a7b9db
https://medium.com/@marziani/lighting-and-shadows-in-augmented-reality-635f30fb81cb
https://medium.com/inc./the-5-best-new-productivity-features-in-ios-14-3db30d868b02
https://uxdesign.cc/game-ui-and-ux-design-in-game-character-conversational-experiences-992e4f5f1f6f
Interactive, lightweight animations for web & apps
Display lightweight, scalable, and interactive Lottie animations on your websites and apps. LottieFiles has the right tools, services, and the largest selection of Lottie assets to get you started.
https://lottiefiles.com/plugins/animate
https://lottiefiles.com/integrations
https://github.com/xvrh/lottie-flutter.git
https://abhishekdoshi26.medium.com/how-to-use-lottie-animation-in-flutter-7ec44d828f6
https://codingwithtashi.medium.com/flutter-animated-ui-8d3b5617d94c
https://medium.com/flutterdevs/awesome-dialog-in-flutter-484e927946b9
Awesome Dialog in flutter using the awesome_dialog_package.
Connect two people or millions with Agora’s easy-to-use SDKs.
We put the power in your hands with low-code tools, building blocks, and powerful chat and streaming APIs.
Flutter integration: