Search packages, repositories and app categories

Package detailsv4.0.7

riverpod_annotation

A package exposing annotations for riverpod_generator

AndroidiOSWebmacOSWindowsLinux
30-day downloads
1.4M
Likes
181
Pub points
130

Install package

flutter pub add riverpod_annotation

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

riverpod_annotation is a code generation package that provides annotations to streamline the creation of Riverpod providers in Flutter applications. It works in conjunction with riverpod_generator to automatically generate boilerplate code, reducing manual effort and potential errors. By using simple annotations, developers can define state management logic more efficiently, improving code readability and maintainability. The package supports all major platforms, making it ideal for cross-platform development.

Use cases

  • Automating provider generation
  • Simplifying state management setup
  • Reducing boilerplate in Riverpod code
  • Enabling type-safe dependencies
  • Supporting large-scale app architecture

Key features

  • Annotations for defining providers
  • Integration with riverpod_generator
  • Type safety enforcement
  • Cross-platform compatibility
  • Minimal runtime overhead

Suitable for

  • Flutter developers using Riverpod
  • Teams prioritizing code maintainability
  • Projects requiring scalable state management
  • Developers seeking reduced boilerplate
  • Apps targeting multiple platforms

Considerations

  • Requires riverpod_generator to be included
  • Needs build_runner for code generation
  • May increase build time slightly
  • Not suitable for runtime provider creation
  • Dependent on correct annotation usage

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Build Status codecov Star on Github License: MIT Discord

Deploys by Netlify

Riverpod


A reactive caching and data-binding framework. https://riverpod.dev Riverpod makes working with asynchronous code a breeze by:

  • Handling errors/loading states by default. No need to manually catch errors
  • Natively supporting advanced scenarios, such as pull-to-refresh
  • Separating the logic from your UI
  • Ensuring your code is testable, scalable and reusable
riverpod pub package
flutter_riverpod pub package
hooks_riverpod pub package

Welcome to Riverpod (anagram of Provider)!

For learning how to use Riverpod, see its documentation: >>> https://riverpod.dev <<<

Long story short:

  • Define network requests by writing a function annotated with @riverpod:

    @riverpod
    Future<String> boredSuggestion(Ref ref) async {
      final response = await http.get(
        Uri.https('boredapi.com', '/api/activity'),
      );
      final json = jsonDecode(response.body);
      return json['activity']! as String;
    }
    
  • Listen to the network request in your UI and gracefully handle loading/error states.

    class Home extends ConsumerWidget {
      @override
      Widget build(BuildContext context, WidgetRef ref) {
        final boredSuggestion = ref.watch(boredSuggestionProvider);
        // Perform a switch-case on the result to handle loading/error states
        return switch (boredSuggestion) {
          AsyncData(:final value) => Text('data: $value'),
          AsyncError(:final error) => Text('error: $error'),
          _ => const Text('loading'),
        };
      }
    }
    

Contributing

Contributions are welcome!

Here is a curated list of how you can help:

  • Report bugs and scenarios that are difficult to implement
  • Report parts of the documentation that are unclear
  • Fix typos/grammar mistakes
  • Update the documentation or add examples
  • Implement new features by making a pull-request

Sponsors

Categories

Dependencies

Dependency list 2 items

Source repository

Projects using this package