Flutter: Quick Guide for Third Party Dependencies
Building a flutter app? A list of third party useful dependencies.

With my experience in building flutter applications, for the average starter developer it is a matter of question which dependencies are more famous / commonly / stable for use to achieve a functionality in their app.
Recommended readers: Developers should have basic flutter development knowledge
Please google the name of dependency and you’ll get the pub.dev link to each 😄
Lets get started with the libraries that are part of an “Ideal App” used in live environments. 😇
Must Have
List of libraries that must be part of an app
State management: GetX / Bloc / Redux.
Coming from the backend development experience. I personally find GetX to be more convenient and less overall code.
Device information: device_info_plus, package_info_plus
When you need information of the device like device id, OS, OS version, etc.
Biometeric authentication: local_auth
Implement mobiles fingerprint / facescan features for authentication with ease.
Jailbreak detection: flutter_jailbreak_detection
Basic and best available on pub.dev. However, one would have to subscribe to a paid solution to implement the best in class since this area is evolving.
HTTP: dio & retrofit, http_certificate_pinning, pretty_dio_logger
Need to connect to server / implement SSL pinning / intercept request and responses at common layer. Retrofit is a Dio client that makes consuming Rest APIs easier for us
Logging: logging
Instead of using print() 🙈, use Logger library to log/print and control levels like INFO, DEBUG, etc, Instead of commenting the print statements on go-live 😒.
Analytics: firebase_analytics
Get useful analytics of downloads, usage, etc from your app that can be viewed from Firebase admin dashboards
Secure Storage: flutter_secure_storage
Store your app secrets in a secure location of your phones OS.
File storage access: path_provider
Access file storage, downloads, app directory with ease.
Render SVG: flutter_svg
Render SVG as a widget.
Connectivity channel: connectivity_plus
Check if device is connected on wifi or cellular.
Encryption / decryption: encrypt / pointycastle
Incase you need AES / RSA algorithms in your code, use encrypt. More ellaborative library is pointycatle, the similar implementation of bouncycastle in JAVA, .Net, etc.
Good to Have
List of libraries that might play secondary role after “the must have”
Configuration / KeyValue Management: firebase_remote_config
Manage your key / values of the app from server with Firebase remote config. This might include visibility of a module, app color, etc.
Location information: geolocator, latlong2
Use this when you app need to fetch geolocation from the phones navigation.
App Version comparison: version
If you need to compare app version with server and show a dialog asking to update then this plugin is the way forward.
Pull to Refresh: pull_to_refresh
Allows you to receive a trigger when you pull from top of your screen, now you can decide to refresh the page or do something else.
In-app browser: webview_flutter / flutter_inappwebview
Flutter default webview_flutter is good enough but when you need more easy out-of-the-box controls flutter_inappwebview. Remember flutter_inappwebview is negligibly slower than webview_flutter.
Local data storage: hive, hive_flutter, hive_generator
Store data for querying later / just simple json storage, I would recommend hive as the storage dependency for you.
Push Notification: firebase_messaging, firebase_core
Send iOS and Android notifications with just one library
Permission: permission_handler
Handle scenarios when your app user accepts, denies permission like camera access, etc.
Utility functions: basic_utils
Need common functions for strings, etc. Saves time writing or finding these functions.
Nice to Have
Optional libraries that may be implemented based on the use-case.
Video player: better_player
Although flutter comes with video_player but if you need more custom prebuilt controls, better_player is the way to go.
Notification UI configuration: awesome_notifications
Control how notification and its UI can be handled outside app and within app.
Maps: google_maps_flutter
Google maps for your app
Open external URL: url_launcher
Open web, phone, SMS, and email apps
Preload animation sections: shimmer
Display facebook, instagram like preloader sections with this plugin
Swipe pages: preload_page_view / page_view / expandable_page_view
Use this when you want to show sections which can be horizontally / vertically swiped
Intro Screen: introduction_screen
Need to create a featured intro screen of your app? this is the plugin to go.
Cool Dialogs: awesome_dialog
Cool and customizable ready dialog boxes
Localization: easy_localization / intl
My preferred libraries when I am working on apps that need multiple languages.
Photo Album: image_picker
If you need a basic photo picker then this library will be of use.
OTP Fields: flutter_otp_text_field
Incase you need a cool OTP / PIN type boxes.
Email validation: email_validator
Don’t get lost in doing the complex email validation logic. Use this.
Social share: social_share
Easy way to share content on socail media with the share options
Charts: charts_flutter
Display charts on your app
Open external apps: external_app_launcher
Open external apps with this plugin
Show PDF documents: flutter_pdfview
I personally like this because it supports password protected PDF files.
Technology is evolving and preferred libraries are subjected to change in future. 😄 . But stands true as on the date of this article.
This is not an exhaustive list but an attempt to highlight some preferred libraries in the industry one could use as a quick guide to start real world flutter development.
Would like to know your views on any other dependencies that should have been part of this list?
Thanks for reading.