Flutter packages I use in every project

In this article, I just want to introduce new users to my favorite packages.
We’re going to talk about some of the best Flutter packages that can reduce your development time and improve the performance of your Flutter app in no time.
These Flutter packages and libraries are used for various aspects of the Flutter technology. So let’s start with them.
State management
I think riverpod is the best solution for state management.
It’s fast, reliable, perfect. Below are the reasons why you should choose Riverpod:
It does not depend directly on the Flutter SDK.
Riverpod can be used to create and enforce unidirectional data flow with model classes that are immutable (meaning they don’t change).
Riverpod does not depend directly on the widget tree; its operation is similar to that of a service locator. Providers are declared globally and can be used anywhere in the application
catches programming errors at compile time, not at run time
removes nesting for listening/combining objects
ensures code testability
auto-delete support
comparison of previous and new state
implements an undo-redo mechanism
debug application state
Read my riverpod guide.
Clean code
flutter_hooks
gives us much cleaner code and saves us boilerplate codes by handling them all for us.
You can check out my article on hooksfor some ideas.
Forms
I use it to create crisper and better quality flutter forms. This helps us get rid of a lot of boilerplate code.
I also have article about this package.
Modeling
Data classes in Dart suck. Because you have to manually handle functions like toJson-fromJson, they are mutable and whatnot.
Solutions such as JSON to Dart and quicktype, give us only limited configuration and customization.
But there are two packages that provide a complete solution for data classes. They are highly customizable, very reliable, save us a lot of boilerplate code.
This json_serializable
and freezed
JSON Serializable + Freezed
is the ideal option. There will be no problems with your models now.
HTTP client
dio
much better than the package http
.
Because it has interceptors and advanced features, plugins cache_interceptor, pretty_dio_logger, cookie_manager; it is also possible to create your own spoilers.
Animations
Lottie is a simplified animation package. You can create animation in Adobe After Effects and easily animate in Flutter. It’s fast and lightweight, so you don’t have to worry about potential memory and CPU issues. This will make your application much more user friendly.
Also you can find many animations here.
storage
shared_preferences
ok, but it’s slow and very limited, too primitive and overpriced.
I use mainly package hive
but now i love it objectbox
Easy to use
Pretty fast
Secure (extended encryption support)
Works not only with primitives, also supports complex objects
Even faster hive and supports automatic data sync across devices
I18N and L10N (Internationalization and Localization)
If your application is multilingual, then intl
is simply necessary because it is of great help in solving localization problems, such as:
Time Zones
Temporary formats
Number formats
Currency formats
Plurals and Gender Features…
Production helper
You don’t need to process all native codes and files.
Create native screensaver of just one command line.
Create launcher icons for each device with just one magic command. For detailed information, please see this article.
Navigation and Utilities
GetX
has a pretty good navigation system and a lot of useful features.
Ease of use
Navigation without
contex
Support for dynamic URLs
Middleware support
It also has so many additional features that I can’t list them all.
You can read more here.
I also use this solution for state management and dependency injection, but only for medium and small projects.
Best UI/UX experience
Why not bottom sheet by default?
It is much more user friendly
Ability to view with internal scrolling + drag down to close
Support for native stacked bottom sheet
Well customizable
The flash package is like a swiss army knife. It is highly customizable and extremely powerful.
I AM use it for dialog boxes, snackbars and toasts.
It is highly customizable and much more user friendly.
Automatic caching images and professional image processing.
Material prepared as part of the course Flutter Mobile Developer.
We invite everyone to a free two-day intensive “Flutter engine, animation and its optimization”. At the intensive, we will look at the deepest mechanisms of the Flutter Engine and learn how to create complex and smooth animations both on mobile platforms and on the web version, use profiling tools to prevent interface freezing. We will also touch on the topic of using WebGL in Flutter web applications to create 3D scenes. registration here.