A step-by-step tutorial showing how to migrate code using StateProvider and StateNotifier to the new Notifier and AsyncNotifier classes. https://codewithandrea.com/articles/flutter-riverpod-async-notifier/
Thanks to the new Riverpod Generator package, we no longer have to declare providers manually. This guide explains how to use the new @riverpod syntax. https://codewithandrea.com/articles/flutter-riverpod-generator/
How to implement bottom navigation with nested routes in Flutter using the GoRouter and Beamer packages (example app with source code included). https://codewithandrea.com/articles/flutter-bottom-navigation-bar-nested-routes-gorouter-beamer/
An overview of different techniques for storing API keys on the client, along with security best practices to prevent them from being stolen. https://codewithandrea.com/articles/flutter-api-keys-dart-define-env-files/
How to access localized strings outside your widgets without a BuildContext, by creating a locale-aware AppLocalizations provider using Riverpod. https://codewithandrea.com/articles/app-localizations-outside-widgets-riverpod/
Flutter apps built for macOS need a client network entitlement in order to make network requests. Here's how to configure it. https://codewithandrea.com/tips/socket-exception-connection-failed-macos/
Fpdart aims to bring all the main types found in functional languages to Dart. Here we focus on the Either type and learn how to use it for robust error handling. https://codewithandrea.com/articles/functional-error-handling-either-fpdart/
If we want to make it explicit when a function can throw or return an error in Dart, we can use the Result type rather than throwing an exception. Here are all the details. https://codewithandrea.com/articles/functional-error-handling-task-either-fpdart/
In Dart, we can use the Result type to make it explicit when a function can return an error, rather than throwing an exception. Here's an overview of the pros and cons. https://codewithandrea.com/articles/flutter-exception-handling-try-catch-result-type/
An overview of how we can use Riverpod to register listeners and initialize complex objects with dependencies during app startup. https://codewithandrea.com/articles/riverpod-initialize-listener-app-startup/