Recommended Flutter Plugins and Packages for Every Project
Flutter’s package and plugin ecosystem is huge, finding the right package can be a challenge. In this article I will share some of my recommended packages and plugins for every Flutter app you develop.
Now maintained officially, go router is the best solution for me to setup navigation for my application. It’s easy to setup and flexible for advance use cases.
I use riverpod for all my state management needs. I prefer it over bloc, redux, mobx and others as it’s simple yet powerful.
Images are network heavy and it’s best to cache images whenever possible. The easiest way to handle image caching is using this package. It handles all the low level stuff and provides us with easy configuration to setup caching.
One of the best package out there to play audio files. I switched to this plugin from audioplayers and I’m satisfied. I can play audio from url, files, byte streams and assets. So it fits for all audio palying needs.
Balancing text size in the interface is crucial to achieve design perfection. Making all the low level calculations to balance the text size is difficult. This is where this package comes in. It provides various configuration that allows us to automatically adjust the size of the text based on screen size, element size and various other parameters.
Often times in our application we want to share data from our application to other applications. For example we develop a quotes application, we would want our users to be able to share the quotes they love with their friends and family. Share plus allows us to share text, urls and images from our application.
Modern applications connect to external services using internet, and it is crucial to know the status of connection for smooth operation of operations. Connectivity plus can be used to know the status of connection, type of connection (WiFi or mobile data) and more.
In any application if I need a full fledged calendar, table calendar is my go-to package. It’s fully customizable as well as simple to use based on use case. Check out my tutorial series on how to use table calendar.
If you application needs lots of custom type definitions, this might be a useful package. As the package describes,
hashCode for you so you don’t have to waste your time writing lots of boilerplate code.
Get information about your application’s package, name, version, build number and more. I use this often to notify users about the updates when they are available or limit certain features based on package version on the back-end api.
Get information regarding user’s device, modal, os, os version, and more. I usually save this information to know the user base and what minimum versions to support based on user base.
The official http client used to connect to external http services. I use it to connect to external services and REST APIs. I prefer this over Dio and other clients as this is simple and highly configurable.
SVG is a popular image format for vector image for web. It’s light weight and high quality. Flutter SVG supports rendering SVG images in Flutter applications.
Fonts contribute a lot to the beauty of application. Google fonts package makes it a breeze to setup and use tons of fonts available for free in Google’s fonts directory.
Hive for me is a easier replacement for shared preferences to save simple key-value paris to complex objects in cache. It’s fast and supports all platforms.
Right animation can increase the UI & UX on any application. Animated text kit provides a lots of pre-defined, easy to setup and customizable text animations.
Getting feedback, bug reports and other usage information from user adds a lot to the success of an application. This package allows you to build a system where users can send feedback right from your application with screenshots and more.
Apart from above packages, I always have following packages under dev dependencies in almost all of my Flutter packages.
Official lint configuration for Dart projects and packages to maintain the code quality and standards.
Official lint configuration for Flutter projects and packages to maintain the code quality and standards.
Must have if you are preparing your Flutter application to publish to app stores. It uses simple commands and configuration to update the launcher icons for your applications. It takes care of generating all the required sizes and configurations.
Flutter is strong because of it’s plugin and packages ecosystem. One thing to remember when using third party packages is to make sure the package is well written and well maintained. It’s good to use package that has a good community behind it.
Enjoyed? Tell your friends.