flutter_riverpod 0.11.0

Flutter Android iOS web

A simple way to access state from anywhere in your application while robust and testable.

0.11.0 #

  • package:flutter_riverpod/flutter_riverpod.dart now exports StateNotifier
  • Marked the providers with @sealed so that the IDE warns against implementing/subclassing providers.
  • Fix mistakes in AsyncValue.guard's documentation (thanks @mono0926)
  • Loosened the version constraints of freezed_annotation to support 0.12.0

0.10.1 #

  • Fixed invalid version error

0.10.0 #

  • Fixed a bug where the state of a provider may be disposed when it shouldn't be disposed.

  • Added a way to import the implementation class of providers with modifiers, such as AutoDisposeProvider.

    This is useful if you want to use Riverpod with the lint always_specify_types:

    import 'package:flutter_riverpod/all.dart';
    
    final AutoDisposeStateProvider<int> counter = StateProvider.autoDispose<int>((ProviderReference ref) {
      return 0;
    });
    

    If you do not use this lint, prefer using the default import instead, to not pollute your auto-complete.

0.9.0 #

  • Breaking Updating ProviderListener so that onChange receives the BuildContext as parameter (thanks to @tbm98)

0.8.0 #

0.7.2 #

Fixed a bug that prevented the use of ConsumerWidget under normal circumstances

0.7.1 #

0.7.0 #

  • Breaking: Consumer is slightly modified to match other Builders like ValueListenableBuilder. Before:

    return Consumer((context, watch) {
      final value = watch(myProvider);
      return Text('$value');
    });
    

    after:

    return Consumer(
      builder: (context, watch, child) {
        final value = watch(myProvider);
        return Text('$value');
      },
    );
    
  • Added a ConsumerWidget class which can be extended to make a StatelessWidget that can read providers:

    class MyWidget extends ConsumerWidget {
      const MyWidget({Key key}) : super(key: key);
    
      @override
      Widget build(BuildContext context, ScopedReader watch) {
        final value = watch(myProvider);
        return Text('$value');
      }
    }
    
  • ref.watch on non ".autoDispose" providers can no-longer read ".autoDispose" providers.

    For more info, see http://riverpod.dev/docs/concepts/modifiers/auto_dispose#the-argument-type-autodisposeprovider-cant-be-assigned-to-the-parameter-type-alwaysaliveproviderbase

  • ScopedProvider now accepts null as a function:

    final example = ScopedProvider<int>(null);
    

    Which is equivalent to:

    final example = ScopedProvider<int>((watch) => throw UnimplementedError(''));
    
  • Fixed a bug where context.refresh may not work properly if the widget tree contains multiple ProviderScope.

0.6.1 #

  • Fixed a bug where when disposing ProviderContainer, providers may be disposed in an incorrect order.
  • Improved the performances of reading providers by 25%

0.6.0 #

  • Merged Computed and Provider. Now, all providers have the ability to rebuild their state when one of the object they listen changed.

    To migrate, change:

    final provider = Provider(...);
    final example = Computed((watch) {
      final value = watch(provider);
      return value;
    });
    

    into:

    final provider = Provider(...);
    final example = Provider((ref) {
      final value = ref.watch(provider);
      return value;
    });
    
  • Computed (now Provider) no-longer deeply compare collections to avoid rebuilds. Comparing the content of lists is quite expensive and actually rarely useful. Now, a simple == comparison is used.

  • Renamed ProviderStateOwner to ProviderContainer

  • Renamed ProviderStateOwnerObserver to ProviderObserver

  • It is no-longer possible to override a provider anywhere in the widget tree. Providers can only be overriden in the top-most ProviderScope/ProviderContainer.

  • Providers can now read values which may change over time using ref.read and ref.watch. When using ref.watch, if the value obtained changes, this will cause the provider to re-create its state.

  • It is no-longer possible to add ProviderObserver anywhere in the widget tree. They can be added only on the top-most ProviderScope/ProviderContainer.

  • Provider.read(BuildContext) is changed into context.read(provider), and can now read Provider.autoDispose.

  • Added ProviderContainer.refresh(provider) and context.refresh(provider). These method allows forcing the refresh of a provider, which can be useful for things like "retry on error" or "pull to refresh".

  • ref.read(StreamProvider<T>) no-longer returns a Stream<T> but an AsyncValue<T> Before:

    final streamProvider = StreamProvider<T>(...);
    final example = Provider((ref) {
      Stream<T> stream = ref.read(streamProvider);
    });
    

    After:

    final streamProvider = StreamProvider<T>(...);
    final example = Provider((ref) {
      Stream<T> stream = ref.watch(streamProvider.steam);
    });
    
  • ref.read(FutureProvider<T>) no-longer returns a Future<T> but an AsyncValue<T>

    Before:

    final futureProvider = FutureProvider<T>(...);
    final example = Provider((ref) {
      Future<T> future = ref.read(futureProvider);
    });
    

    After:

    final futureProvider = FutureProvider<T>(...);
    final example = Provider((ref) {
      Future<T> future = ref.watch(futureProvider.future);
    });
    
  • Removed ref.dependOn. You can now use ref.read/ref.watch to acheive the same effect.

    Before:

    final streamProvider = StreamProvider<T>(...);
    final example = Provider((ref) {
      Future<T> last = ref.dependOn(streamProvider).last;
    });
    

    After:

    final streamProvider = StreamProvider<T>(...);
    final example = Provider((ref) {
      Future<T> last = ref.watch(streamProvider.last);
    });
    
  • Provider.readOwner(ProviderStateOwner) is changed into ProviderContainer.read(Provider)

  • Provider.watchOwner(ProviderStateOwner, (value) {}) is changed into:

    ProviderContainer container;
    final provider = Provider((ref) => 0);
    
    final subscription = container.listen(
      provider,
      mayHaveChanged: (sub) {},
      didChange: (sub) {}.
    );
    
    subscription.close();
    
  • MyProvider.family.autoDispose now correctly free both the arguments and the associated providers from memory when the provider is no-longer listened.

  • Added ScopedProvider, a new kind of provider that can be overriden anywhere in the widget tree. Normal providers cannot read a ScopedProvider.

  • Added ProviderListener, a widget which allows listening to a provider without rebuilding the widget-tree. This can be useful for showing modals and pushing routes.

0.5.1 #

  • Fixed the documentation of StateNotifierProvider incorrectly showing the documentation of StreamProvider.
  • Improve the documentation of StateProvider.

0.5.0 #

0.4.0 #

Changed the syntax of "AutoDispose*" and "*Family" to use a syntax similar to named constructors instead.

Before:

final myProvider = AutoDisposeStateNotifierProviderFamily<MyStateNotifier, int>((ref, id) {
  return MyStateNotifier(id: id);
});

After:

final myProvider = StateNotifierProvider.autoDispose.family<MyStateNotifier, int>((ref, id) {
  return MyStateNotifier(id: id);
});

The behavior is the same. Only the syntax changed.

0.3.0 #

  • Added AsyncValue.whenData, syntax sugar for AsyncValue.when to handle only the data case and do nothing for the error/loading cases.

  • Fixed a bug that caused [Computed] to crash if it stopped being listened then was listened again.

0.2.1 #

  • Computed and Consumer now correctly unsubscribe to a provider when their function stops using a provider.

0.2.0 #

  • ref.read is renamed as ref.dependOn
  • Deprecated ref.dependOn(streamProvider).stream and ref.dependOn(futureProvider).future in favor of a universal ref.dependOn(provider).value.
  • added ref.read(provider), syntax sugar for ref.dependOn(provider).value.

0.1.0 #

Initial release

91
likes
110
pub points
94%
popularity

A simple way to access state from anywhere in your application while robust and testable.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

Uploader

darky12s@gmail.com

License

MIT (LICENSE)

Dependencies

collection, flutter, meta, riverpod, state_notifier

More

Packages that depend on flutter_riverpod