Skip to content

Upgrading provider 3 to 4

Breaking3.2.0 → 4.3.3Breaking4Platform1Deprecated2New7Changed10Fixed11Other8

BreakingUpgrade verdict

4 breaking changes and a platform requirement change.

  • The error type thrown when a provider is missing has a new name, so code that catches the old name must be updated.
  • The constructor parameters for proxy providers have new names, so existing code using the old names must be updated.
  • Provider constructors now take create instead of builder, so existing code must be updated.
  • Code that relied on the package guessing whether a widget should listen for changes will now get an error in debug mode instead, so you may need to set the flag explicitly.
Top 5 of 7 that need code or config changes

Dart SDK requirement changed in 4.1.0-dev+1: >=2.0.0 <3.0.0 → >=2.7.0 <3.0.0.

Requires Flutter >=1.16.0 <2.0.0 from 4.3.2+4 (none stated before).

Breaking4
Renames ProviderNotFoundError to ProviderNotFoundException so Provider.of can be used in try/catch without a warning.
ProviderNotFoundErrorProviderNotFoundExceptionProvider.of
Renames initialBuilder and builder of *ProxyProvider to create and update.
initialBuilderbuildercreateupdateProxyProvider
Renames the builder parameter of *Provider to create.
buildercreateProvider
Removes inference of the listen flag of Provider.of and throws in debug mode when listen is true where it should not be.
Provider.oflisten
Platform1
Now requires Flutter >= 1.6.0 and Dart >= 2.7.0.
Deprecated2
Undeprecates ValueListenableProvider; only its default constructor remains deprecated while the .value constructor is kept.
ValueListenableProviderValueListenableProvider.value
Marks ValueListenableProvider as deprecated.
ValueListenableProvider

Generated by DepDelta from published Dart source. Not mixed with prose notes.

  • removed: class BuilderStateDelegate<T> extends ValueStateDelegate<T>
  • removed: class DelegateWidget: abstract extends StatefulWidget
  • removed: class ProviderNotFoundError extends Error
  • removed: class ProxyProviderElement extends StatefulElement
  • removed: class ProxyProviderState<T extends ProxyProviderWidget>: abstract extends State<T>
  • removed: class ProxyProviderWidget: abstract extends StatefulWidget
  • removed: class SingleChildCloneableWidget: abstract implements Widget
  • removed: class SingleValueDelegate<T> extends ValueStateDelegate<T>
  • removed: class StateDelegate: abstract
  • removed: class ValueDelegateWidget<T>: abstract extends DelegateWidget
  • removed: class ValueStateDelegate<T>: abstract extends StateDelegate
  • removed: ctor BuilderStateDelegate(this._builder, {Disposer<T> dispose})
  • removed: ctor DelegateWidget({ Key key, this.delegate, })
  • removed: ctor ProviderNotFoundError( this.valueType, this.widgetType, )
  • removed: ctor ProxyProviderElement(ProxyProviderWidget widget)
  • removed: ctor ProxyProviderWidget({Key key})
  • removed: ctor SingleValueDelegate(this.value)
  • removed: ctor StreamProvider.controller({ Key key, @required ValueBuilder<StreamController<T>> create, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<StreamController<T>> builder, T initialData, ErrorBuilder<T> catchError, UpdateShouldNotify<T> updateShouldNotify, Widget child, })
  • removed: ctor ValueDelegateWidget({ Key key, @required ValueStateDelegate<T> delegate, })
  • removed: field Consumer.child: final Widget
  • removed: field Consumer2.child: final Widget
  • removed: field Consumer3.child: final Widget
  • removed: field Consumer4.child: final Widget
  • removed: field Consumer5.child: final Widget
  • removed: field Consumer6.child: final Widget
  • removed: field DelegateWidget.delegate: final StateDelegate
  • removed: field FutureProvider.catchError: final ErrorBuilder<T>
  • removed: field FutureProvider.child: final Widget
  • removed: field FutureProvider.initialData: final T
  • removed: field FutureProvider.updateShouldNotify: final UpdateShouldNotify<T>
  • removed: field ListenableProvider.child: final Widget
  • removed: field MultiProvider.child: final Widget
  • removed: field MultiProvider.providers: final List<SingleChildCloneableWidget>
  • removed: field Provider.child: final Widget
  • removed: field Provider.updateShouldNotify: final UpdateShouldNotify<T>
  • removed: field ProviderNotFoundError.valueType: final Type
  • removed: field ProviderNotFoundError.widgetType: final Type
  • removed: field Selector0.child: final Widget
  • removed: field Selector0.selector: final ValueBuilder<T>
  • removed: field SingleValueDelegate.value: final T
  • removed: field StreamProvider.catchError: final ErrorBuilder<T>
  • removed: field StreamProvider.child: final Widget
  • removed: field StreamProvider.initialData: final T
  • removed: field StreamProvider.updateShouldNotify: final UpdateShouldNotify<T>
  • removed: field ValueListenableProvider.child: final Widget
  • removed: field ValueListenableProvider.updateShouldNotify: final UpdateShouldNotify<T>
  • removed: get BuilderStateDelegate.value: T
  • removed: get ListenableProxyProvider.builder: ProxyProviderBuilder<T, R>
  • removed: get ListenableProxyProvider2.builder: ProxyProviderBuilder2<T, T2, R>
  • removed: get ListenableProxyProvider3.builder: ProxyProviderBuilder3<T, T2, T3, R>
  • removed: get ListenableProxyProvider4.builder: ProxyProviderBuilder4<T, T2, T3, T4, R>
  • removed: get ListenableProxyProvider5.builder: ProxyProviderBuilder5<T, T2, T3, T4, T5, R>
  • removed: get ListenableProxyProvider6.builder: ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R>
  • removed: get ProxyProvider.builder: ProxyProviderBuilder<T, R>
  • removed: get ProxyProvider2.builder: ProxyProviderBuilder2<T, T2, R>
  • removed: get ProxyProvider3.builder: ProxyProviderBuilder3<T, T2, T3, R>
  • removed: get ProxyProvider4.builder: ProxyProviderBuilder4<T, T2, T3, T4, R>
  • removed: get ProxyProvider5.builder: ProxyProviderBuilder5<T, T2, T3, T4, T5, R>
  • removed: get ProxyProvider6.builder: ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R>
  • removed: get ProxyProviderElement.state: ProxyProviderState<ProxyProviderWidget>
  • removed: get ProxyProviderElement.widget: ProxyProviderWidget
  • removed: get StateDelegate.context: BuildContext
  • removed: get StateDelegate.setState: StateSetter
  • removed: get ValueDelegateWidget.delegate: ValueStateDelegate<T>
  • removed: get ValueStateDelegate.value: T
  • removed: method BuilderStateDelegate.didUpdateDelegate(BuilderStateDelegate<T> old): void
  • removed: method BuilderStateDelegate.dispose(): void
  • removed: method BuilderStateDelegate.initDelegate(): void
  • removed: method Consumer.build(BuildContext context): Widget
  • removed: method Consumer.cloneWithChild(Widget child): Consumer<T>
  • removed: method Consumer2.build(BuildContext context): Widget
  • removed: method Consumer2.cloneWithChild(Widget child): Consumer2<A, B>
  • removed: method Consumer3.build(BuildContext context): Widget
  • removed: method Consumer3.cloneWithChild(Widget child): Consumer3<A, B, C>
  • removed: method Consumer4.build(BuildContext context): Widget
  • removed: method Consumer4.cloneWithChild(Widget child): Consumer4<A, B, C, D>
  • removed: method Consumer5.build(BuildContext context): Widget
  • removed: method Consumer5.cloneWithChild(Widget child): Consumer5<A, B, C, D, E>
  • removed: method Consumer6.build(BuildContext context): Widget
  • removed: method Consumer6.cloneWithChild(Widget child): Consumer6<A, B, C, D, E, F>
  • removed: method DelegateWidget.build(BuildContext context): Widget
  • removed: method DelegateWidget.createElement(): StatefulElement
  • removed: method DelegateWidget.createState(): _DelegateWidgetState
  • removed: method FutureProvider.build(BuildContext context): Widget
  • removed: method FutureProvider.cloneWithChild(Widget child): FutureProvider<T>
  • removed: method InheritedProvider.updateShouldNotify(InheritedProvider<T> oldWidget): bool
  • removed: method ListenableProvider.build(BuildContext context): Widget
  • removed: method ListenableProvider.cloneWithChild(Widget child): ListenableProvider<T>
  • removed: method MultiProvider.build(BuildContext context): Widget
  • removed: method MultiProvider.cloneWithChild(Widget child): MultiProvider
  • removed: method Provider.build(BuildContext context): Widget
  • removed: method Provider.cloneWithChild(Widget child): Provider<T>
  • removed: method ProviderNotFoundError.toString(): String
  • removed: method ProxyProviderElement.build(): Widget
  • removed: method ProxyProviderElement.didChangeDependencies(): void
  • removed: method ProxyProviderState.didUpdateDependencies(): void
  • removed: method ProxyProviderWidget.createElement(): ProxyProviderElement
  • removed: method ProxyProviderWidget.createState(): ProxyProviderState<ProxyProviderWidget>
  • removed: method Selector0.cloneWithChild(Widget child): Selector0<T>
  • removed: method SingleChildCloneableWidget.cloneWithChild(Widget child): SingleChildCloneableWidget
  • removed: method StateDelegate.didUpdateDelegate(covariant StateDelegate old): void
  • removed: method StateDelegate.dispose(): void
  • removed: method StateDelegate.initDelegate(): void
  • removed: method StreamProvider.build(BuildContext context): Widget
  • removed: method StreamProvider.cloneWithChild(Widget child): StreamProvider<T>
  • removed: method ValueListenableProvider.build(BuildContext context): Widget
  • removed: method ValueListenableProvider.cloneWithChild(Widget child): ValueListenableProvider<T>
  • removed: typedef Disposer<T> = void Function(BuildContext context, T value)
  • removed: typedef ValueBuilder<T> = T Function(BuildContext context)
  • changed: class ChangeNotifierProvider<T extends ChangeNotifier> extends ListenableProvider<T> implements SingleChildCloneableWidget → class ChangeNotifierProvider<T extends ChangeNotifier> extends ListenableProvider<T>
  • changed: class Consumer2<A, B> extends StatelessWidget implements SingleChildCloneableWidget → class Consumer2<A, B> extends SingleChildStatelessWidget
  • changed: class Consumer3<A, B, C> extends StatelessWidget implements SingleChildCloneableWidget → class Consumer3<A, B, C> extends SingleChildStatelessWidget
  • changed: class Consumer4<A, B, C, D> extends StatelessWidget implements SingleChildCloneableWidget → class Consumer4<A, B, C, D> extends SingleChildStatelessWidget
  • changed: class Consumer5<A, B, C, D, E> extends StatelessWidget implements SingleChildCloneableWidget → class Consumer5<A, B, C, D, E> extends SingleChildStatelessWidget
  • changed: class Consumer6<A, B, C, D, E, F> extends StatelessWidget implements SingleChildCloneableWidget → class Consumer6<A, B, C, D, E, F> extends SingleChildStatelessWidget
  • changed: class Consumer<T> extends StatelessWidget implements SingleChildCloneableWidget → class Consumer<T> extends SingleChildStatelessWidget
  • changed: class FutureProvider<T> extends ValueDelegateWidget<Future<T>> implements SingleChildCloneableWidget → class FutureProvider<T> extends DeferredInheritedProvider<Future<T>, T>
  • changed: class InheritedProvider<T> extends InheritedWidget → class InheritedProvider<T> extends SingleChildStatelessWidget
  • changed: class ListenableProvider<T extends Listenable> extends ValueDelegateWidget<T> implements SingleChildCloneableWidget → class ListenableProvider<T extends Listenable> extends InheritedProvider<T>
  • changed: class ListenableProxyProvider2<T, T2, R extends Listenable> extends _NumericProxyProvider<T, T2, Void, Void, Void, Void, R> → class ListenableProxyProvider2<T, T2, R extends Listenable> extends ListenableProxyProvider0<R>
  • changed: class ListenableProxyProvider3<T, T2, T3, R extends Listenable> extends _NumericProxyProvider<T, T2, T3, Void, Void, Void, R> → class ListenableProxyProvider3<T, T2, T3, R extends Listenable> extends ListenableProxyProvider0<R>
  • changed: class ListenableProxyProvider4<T, T2, T3, T4, R extends Listenable> extends _NumericProxyProvider<T, T2, T3, T4, Void, Void, R> → class ListenableProxyProvider4<T, T2, T3, T4, R extends Listenable> extends ListenableProxyProvider0<R>
  • changed: class ListenableProxyProvider5<T, T2, T3, T4, T5, R extends Listenable> extends _NumericProxyProvider<T, T2, T3, T4, T5, Void, R> → class ListenableProxyProvider5<T, T2, T3, T4, T5, R extends Listenable> extends ListenableProxyProvider0<R>
  • changed: class ListenableProxyProvider6<T, T2, T3, T4, T5, T6, R extends Listenable> extends _NumericProxyProvider<T, T2, T3, T4, T5, T6, R> → class ListenableProxyProvider6<T, T2, T3, T4, T5, T6, R extends Listenable> extends ListenableProxyProvider0<R>
  • changed: class ListenableProxyProvider<T, R extends Listenable> extends _NumericProxyProvider<T, Void, Void, Void, Void, Void, R> → class ListenableProxyProvider<T, R extends Listenable> extends ListenableProxyProvider0<R>
  • changed: class MultiProvider extends StatelessWidget implements SingleChildCloneableWidget → class MultiProvider extends Nested
  • changed: class Provider<T> extends ValueDelegateWidget<T> implements SingleChildCloneableWidget → class Provider<T> extends InheritedProvider<T>
  • changed: class ProxyProvider2<T, T2, R> extends NumericProxyProvider<T, T2, Void, Void, Void, Void, R> → class ProxyProvider2<T, T2, R> extends ProxyProvider0<R>
  • changed: class ProxyProvider3<T, T2, T3, R> extends NumericProxyProvider<T, T2, T3, Void, Void, Void, R> → class ProxyProvider3<T, T2, T3, R> extends ProxyProvider0<R>
  • changed: class ProxyProvider4<T, T2, T3, T4, R> extends NumericProxyProvider<T, T2, T3, T4, Void, Void, R> → class ProxyProvider4<T, T2, T3, T4, R> extends ProxyProvider0<R>
  • changed: class ProxyProvider5<T, T2, T3, T4, T5, R> extends NumericProxyProvider<T, T2, T3, T4, T5, Void, R> → class ProxyProvider5<T, T2, T3, T4, T5, R> extends ProxyProvider0<R>
  • changed: class ProxyProvider6<T, T2, T3, T4, T5, T6, R> extends NumericProxyProvider<T, T2, T3, T4, T5, T6, R> → class ProxyProvider6<T, T2, T3, T4, T5, T6, R> extends ProxyProvider0<R>
  • changed: class ProxyProvider<T, R> extends NumericProxyProvider<T, Void, Void, Void, Void, Void, R> → class ProxyProvider<T, R> extends ProxyProvider0<R>
  • changed: class Selector0<T> extends StatefulWidget implements SingleChildCloneableWidget → class Selector0<T> extends SingleChildStatefulWidget
  • changed: class StreamProvider<T> extends ValueDelegateWidget<Stream<T>> implements SingleChildCloneableWidget → class StreamProvider<T> extends DeferredInheritedProvider<Stream<T>, T>
  • changed: class ValueListenableProvider<T> extends ValueDelegateWidget<ValueListenable<T>> implements SingleChildCloneableWidget → class ValueListenableProvider<T> extends DeferredInheritedProvider<ValueListenable<T>, T>
  • changed: ctor ChangeNotifierProvider({ Key key, @required ValueBuilder<T> create, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<T> builder, Widget child, }) → ctor ChangeNotifierProvider({ Key key, @required Create<T> create, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ChangeNotifierProvider.value({ Key key, @required T value, Widget child, }) → ctor ChangeNotifierProvider.value({ Key key, @required T value, TransitionBuilder builder, Widget child, })
  • changed: ctor ChangeNotifierProxyProvider({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder<T, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder<T, R> builder, Widget child, }) → ctor ChangeNotifierProxyProvider({ Key key, @required Create<R> create, @required ProxyProviderBuilder<T, R> update, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ChangeNotifierProxyProvider2({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder2<T, T2, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder2<T, T2, R> builder, Widget child, }) → ctor ChangeNotifierProxyProvider2({ Key key, @required Create<R> create, @required ProxyProviderBuilder2<T, T2, R> update, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ChangeNotifierProxyProvider3({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder3<T, T2, T3, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder3<T, T2, T3, R> builder, Widget child, }) → ctor ChangeNotifierProxyProvider3({ Key key, @required Create<R> create, @required ProxyProviderBuilder3<T, T2, T3, R> update, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ChangeNotifierProxyProvider4({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder4<T, T2, T3, T4, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder4<T, T2, T3, T4, R> builder, Widget child, }) → ctor ChangeNotifierProxyProvider4({ Key key, @required Create<R> create, @required ProxyProviderBuilder4<T, T2, T3, T4, R> update, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ChangeNotifierProxyProvider5({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder5<T, T2, T3, T4, T5, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder5<T, T2, T3, T4, T5, R> builder, Widget child, }) → ctor ChangeNotifierProxyProvider5({ Key key, @required Create<R> create, @required ProxyProviderBuilder5<T, T2, T3, T4, T5, R> update, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ChangeNotifierProxyProvider6({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R> builder, Widget child, }) → ctor ChangeNotifierProxyProvider6({ Key key, @required Create<R> create, @required ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R> update, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor Consumer({ Key key, @required this.builder, this.child, }) → ctor Consumer({ Key key, @required this.builder, Widget child, })
  • changed: ctor Consumer2({ Key key, @required this.builder, this.child, }) → ctor Consumer2({ Key key, @required this.builder, Widget child, })
  • changed: ctor Consumer3({ Key key, @required this.builder, this.child, }) → ctor Consumer3({ Key key, @required this.builder, Widget child, })
  • changed: ctor Consumer4({ Key key, @required this.builder, this.child, }) → ctor Consumer4({ Key key, @required this.builder, Widget child, })
  • changed: ctor Consumer5({ Key key, @required this.builder, this.child, }) → ctor Consumer5({ Key key, @required this.builder, Widget child, })
  • changed: ctor Consumer6({ Key key, @required this.builder, this.child, }) → ctor Consumer6({ Key key, @required this.builder, Widget child, })
  • changed: ctor FutureProvider({ Key key, @required ValueBuilder<Future<T>> create, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<Future<T>> builder, T initialData, ErrorBuilder<T> catchError, UpdateShouldNotify<T> updateShouldNotify, Widget child, }) → ctor FutureProvider({ Key key, @required Create<Future<T>> create, T initialData, ErrorBuilder<T> catchError, UpdateShouldNotify<T> updateShouldNotify, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor FutureProvider.value({ Key key, @required Future<T> value, T initialData, ErrorBuilder<T> catchError, UpdateShouldNotify<T> updateShouldNotify, Widget child, }) → ctor FutureProvider.value({ Key key, @required Future<T> value, T initialData, ErrorBuilder<T> catchError, UpdateShouldNotify<T> updateShouldNotify, TransitionBuilder builder, Widget child, })
  • changed: ctor InheritedProvider({ Key key, @required T value, UpdateShouldNotify<T> updateShouldNotify, Widget child, }) → ctor InheritedProvider({ Key key, Create<T> create, T Function(BuildContext context, T value) update, UpdateShouldNotify<T> updateShouldNotify, void Function(T value) debugCheckInvalidValueType, StartListening<T> startListening, Dispose<T> dispose, this.builder, bool lazy, Widget child, })
  • changed: ctor ListenableProvider({ Key key, @required ValueBuilder<T> create, @Deprecated('Will be removed as part of 4.0.0, use create instead') ValueBuilder<T> builder, Disposer<T> dispose, Widget child, }) → ctor ListenableProvider({ Key key, @required Create<T> create, Dispose<T> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ListenableProvider.value({ Key key, @required T value, Widget child, }) → ctor ListenableProvider.value({ Key key, @required T value, UpdateShouldNotify<T> updateShouldNotify, TransitionBuilder builder, Widget child, })
  • changed: ctor ListenableProxyProvider({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder<T, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder<T, R> builder, Disposer<R> dispose, Widget child, }) → ctor ListenableProxyProvider({ Key key, @required Create<R> create, @required ProxyProviderBuilder<T, R> update, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ListenableProxyProvider2({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder2<T, T2, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder2<T, T2, R> builder, Disposer<R> dispose, Widget child, }) → ctor ListenableProxyProvider2({ Key key, @required Create<R> create, @required ProxyProviderBuilder2<T, T2, R> update, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ListenableProxyProvider3({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder3<T, T2, T3, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder3<T, T2, T3, R> builder, Disposer<R> dispose, Widget child, }) → ctor ListenableProxyProvider3({ Key key, @required Create<R> create, @required ProxyProviderBuilder3<T, T2, T3, R> update, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ListenableProxyProvider4({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder4<T, T2, T3, T4, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder4<T, T2, T3, T4, R> builder, Disposer<R> dispose, Widget child, }) → ctor ListenableProxyProvider4({ Key key, @required Create<R> create, @required ProxyProviderBuilder4<T, T2, T3, T4, R> update, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ListenableProxyProvider5({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder5<T, T2, T3, T4, T5, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder5<T, T2, T3, T4, T5, R> builder, Disposer<R> dispose, Widget child, }) → ctor ListenableProxyProvider5({ Key key, @required Create<R> create, @required ProxyProviderBuilder5<T, T2, T3, T4, T5, R> update, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ListenableProxyProvider6({ Key key, @required ValueBuilder<R> create, @required ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R> update, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<R> initialBuilder, @Deprecated('will be removed in 4.0.0, use update instead') ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R> builder, Disposer<R> dispose, Widget child, }) → ctor ListenableProxyProvider6({ Key key, @required Create<R> create, @required ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R> update, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor MultiProvider({ Key key, @required this.providers, this.child, }) → ctor MultiProvider({ Key key, @required List<SingleChildWidget> providers, Widget child, TransitionBuilder builder, })
  • changed: ctor Provider({ Key key, @Deprecated('Will be removed as part of 4.0.0, use create instead') ValueBuilder<T> builder, @required ValueBuilder<T> create, Disposer<T> dispose, Widget child, }) → ctor Provider({ Key key, @required Create<T> create, Dispose<T> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor Provider.value({ Key key, @required T value, UpdateShouldNotify<T> updateShouldNotify, Widget child, }) → ctor Provider.value({ Key key, @required T value, UpdateShouldNotify<T> updateShouldNotify, TransitionBuilder builder, Widget child, })
  • changed: ctor ProxyProvider({ Key key, @Deprecated('Will be removed as part of 4.0.0, use create instead') ValueBuilder<R> initialBuilder, ValueBuilder<R> create, @Deprecated('Will be removed as part of 4.0.0, use update instead') ProxyProviderBuilder<T, R> builder, @required ProxyProviderBuilder<T, R> update, UpdateShouldNotify<R> updateShouldNotify, Disposer<R> dispose, Widget child, }) → ctor ProxyProvider({ Key key, Create<R> create, @required ProxyProviderBuilder<T, R> update, UpdateShouldNotify<R> updateShouldNotify, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ProxyProvider2({ Key key, @Deprecated('Will be removed as part of 4.0.0, use create instead') ValueBuilder<R> initialBuilder, ValueBuilder<R> create, @Deprecated('Will be removed as part of 4.0.0, use update instead') ProxyProviderBuilder2<T, T2, R> builder, @required ProxyProviderBuilder2<T, T2, R> update, UpdateShouldNotify<R> updateShouldNotify, Disposer<R> dispose, Widget child, }) → ctor ProxyProvider2({ Key key, Create<R> create, @required ProxyProviderBuilder2<T, T2, R> update, UpdateShouldNotify<R> updateShouldNotify, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ProxyProvider3({ Key key, @Deprecated('Will be removed as part of 4.0.0, use create instead') ValueBuilder<R> initialBuilder, ValueBuilder<R> create, @Deprecated('Will be removed as part of 4.0.0, use update instead') ProxyProviderBuilder3<T, T2, T3, R> builder, @required ProxyProviderBuilder3<T, T2, T3, R> update, UpdateShouldNotify<R> updateShouldNotify, Disposer<R> dispose, Widget child,… → ctor ProxyProvider3({ Key key, Create<R> create, @required ProxyProviderBuilder3<T, T2, T3, R> update, UpdateShouldNotify<R> updateShouldNotify, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ProxyProvider4({ Key key, @Deprecated('Will be removed as part of 4.0.0, use create instead') ValueBuilder<R> initialBuilder, ValueBuilder<R> create, @Deprecated('Will be removed as part of 4.0.0, use update instead') ProxyProviderBuilder4<T, T2, T3, T4, R> builder, @required ProxyProviderBuilder4<T, T2, T3, T4, R> update, UpdateShouldNotify<R> updateShouldNotify, Disposer<R> dispose, Widget… → ctor ProxyProvider4({ Key key, Create<R> create, @required ProxyProviderBuilder4<T, T2, T3, T4, R> update, UpdateShouldNotify<R> updateShouldNotify, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ProxyProvider5({ Key key, @Deprecated('Will be removed as part of 4.0.0, use create instead') ValueBuilder<R> initialBuilder, ValueBuilder<R> create, @Deprecated('Will be removed as part of 4.0.0, use update instead') ProxyProviderBuilder5<T, T2, T3, T4, T5, R> builder, @required ProxyProviderBuilder5<T, T2, T3, T4, T5, R> update, UpdateShouldNotify<R> updateShouldNotify, Disposer<R> dispose… → ctor ProxyProvider5({ Key key, Create<R> create, @required ProxyProviderBuilder5<T, T2, T3, T4, T5, R> update, UpdateShouldNotify<R> updateShouldNotify, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ProxyProvider6({ Key key, @Deprecated('Will be removed as part of 4.0.0, use create instead') ValueBuilder<R> initialBuilder, ValueBuilder<R> create, @Deprecated('Will be removed as part of 4.0.0, use update instead') ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R> builder, @required ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R> update, UpdateShouldNotify<R> updateShouldNotify, Disposer<R>… → ctor ProxyProvider6({ Key key, Create<R> create, @required ProxyProviderBuilder6<T, T2, T3, T4, T5, T6, R> update, UpdateShouldNotify<R> updateShouldNotify, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor Selector({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A) selector, Widget child, }) → ctor Selector({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A) selector, ShouldRebuild<S> shouldRebuild, Widget child, })
  • changed: ctor Selector0({ Key key, @required this.builder, @required this.selector, this.child, }) → ctor Selector0({ Key key, @required this.builder, @required this.selector, ShouldRebuild<T> shouldRebuild, Widget child, })
  • changed: ctor Selector2({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B) selector, Widget child, }) → ctor Selector2({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B) selector, ShouldRebuild<S> shouldRebuild, Widget child, })
  • changed: ctor Selector3({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B, C) selector, Widget child, }) → ctor Selector3({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B, C) selector, ShouldRebuild<S> shouldRebuild, Widget child, })
  • changed: ctor Selector4({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B, C, D) selector, Widget child, }) → ctor Selector4({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B, C, D) selector, ShouldRebuild<S> shouldRebuild, Widget child, })
  • changed: ctor Selector5({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B, C, D, E) selector, Widget child, }) → ctor Selector5({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B, C, D, E) selector, ShouldRebuild<S> shouldRebuild, Widget child, })
  • changed: ctor Selector6({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B, C, D, E, F) selector, Widget child, }) → ctor Selector6({ Key key, @required ValueWidgetBuilder<S> builder, @required S Function(BuildContext, A, B, C, D, E, F) selector, ShouldRebuild<S> shouldRebuild, Widget child, })
  • changed: ctor StreamProvider({ Key key, @required ValueBuilder<Stream<T>> create, @Deprecated('will be removed in 4.0.0, use create instead') ValueBuilder<Stream<T>> builder, T initialData, ErrorBuilder<T> catchError, UpdateShouldNotify<T> updateShouldNotify, Widget child, }) → ctor StreamProvider({ Key key, @required Create<Stream<T>> create, T initialData, ErrorBuilder<T> catchError, UpdateShouldNotify<T> updateShouldNotify, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor StreamProvider.value({ Key key, @required Stream<T> value, T initialData, ErrorBuilder<T> catchError, UpdateShouldNotify<T> updateShouldNotify, Widget child, }) → ctor StreamProvider.value({ Key key, @required Stream<T> value, T initialData, ErrorBuilder<T> catchError, UpdateShouldNotify<T> updateShouldNotify, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ValueListenableProvider({ Key key, @Deprecated('Will be removed as part of 4.0.0, use update instead') ValueBuilder<ValueNotifier<T>> builder, @required ValueBuilder<ValueNotifier<T>> create, UpdateShouldNotify<T> updateShouldNotify, Widget child, }) → ctor ValueListenableProvider({ Key key, @required Create<ValueNotifier<T>> create, UpdateShouldNotify<T> updateShouldNotify, bool lazy, TransitionBuilder builder, Widget child, })
  • changed: ctor ValueListenableProvider.value({ Key key, @required ValueListenable<T> value, UpdateShouldNotify<T> updateShouldNotify, Widget child, }) → ctor ValueListenableProvider.value({ Key key, @required ValueListenable<T> value, UpdateShouldNotify<T> updateShouldNotify, TransitionBuilder builder, Widget child, })
  • changed: method Consumer4.Function(BuildContext context, A value, B value2, C value3, D value4, Widget child): Widget → method Consumer4.Function( BuildContext context, A value, B value2, C value3, D value4, Widget child, ): Widget
  • changed: method Consumer5.Function(BuildContext context, A value, B value2, C value3, D value4, E value5, Widget child): Widget → method Consumer5.Function( BuildContext context, A value, B value2, C value3, D value4, E value5, Widget child, ): Widget
  • changed: method Consumer6.Function(BuildContext context, A value, B value2, C value3, D value4, E value5, F value6, Widget child): Widget → method Consumer6.Function( BuildContext context, A value, B value2, C value3, D value4, E value5, F value6, Widget child, ): Widget
  • changed: typedef ProviderBuilder<R> = Widget Function( BuildContext context, R value, Widget child) → typedef ProviderBuilder<R> = Widget Function( BuildContext context, R value, Widget child, )
  • changed: typedef ProxyProviderBuilder2<T, T2, R> = R Function( BuildContext context, T value, T2 value2, R previous) → typedef ProxyProviderBuilder2<T, T2, R> = R Function( BuildContext context, T value, T2 value2, R previous, )
  • changed: typedef ProxyProviderBuilder3<T, T2, T3, R> = R Function( BuildContext context, T value, T2 value2, T3 value3, R previous) → typedef ProxyProviderBuilder3<T, T2, T3, R> = R Function( BuildContext context, T value, T2 value2, T3 value3, R previous, )
  • changed: typedef ProxyProviderBuilder4<T, T2, T3, T4, R> = R Function( BuildContext context, T value, T2 value2, T3 value3, T4 value4, R previous) → typedef ProxyProviderBuilder4<T, T2, T3, T4, R> = R Function( BuildContext context, T value, T2 value2, T3 value3, T4 value4, R previous, )
  • changed: typedef ProxyProviderBuilder<T, R> = R Function( BuildContext context, T value, R previous) → typedef ProxyProviderBuilder<T, R> = R Function( BuildContext context, T value, R previous, )
  • added: class ChangeNotifierProxyProvider0<R extends ChangeNotifier> extends ListenableProxyProvider0<R>
  • added: class DeferredInheritedProvider<T, R> extends InheritedProvider<R>
  • added: class InheritedContext<T>: abstract extends BuildContext
  • added: class ListenableProxyProvider0<R extends Listenable> extends InheritedProvider<R>
  • added: class ProviderNotFoundException implements Exception
  • added: class ProxyProvider0<R> extends InheritedProvider<R>
  • added: class ReassembleHandler: abstract
  • added: ctor ChangeNotifierProxyProvider0({ Key key, @required Create<R> create, @required R Function(BuildContext, R value) update, bool lazy, TransitionBuilder builder, Widget child, })
  • added: ctor DeferredInheritedProvider({ Key key, @required Create<T> create, Dispose<T> dispose, @required DeferredStartListening<T, R> startListening, UpdateShouldNotify<R> updateShouldNotify, bool lazy, TransitionBuilder builder, Widget child, })
  • added: ctor DeferredInheritedProvider.value({ Key key, @required T value, @required DeferredStartListening<T, R> startListening, UpdateShouldNotify<R> updateShouldNotify, bool lazy, TransitionBuilder builder, Widget child, })
  • added: ctor InheritedProvider.value({ Key key, @required T value, UpdateShouldNotify<T> updateShouldNotify, StartListening<T> startListening, bool lazy, this.builder, Widget child, })
  • added: ctor ListenableProxyProvider0({ Key key, @required Create<R> create, @required R Function(BuildContext, R previous) update, Dispose<R> dispose, UpdateShouldNotify<R> updateShouldNotify, bool lazy, TransitionBuilder builder, Widget child, })
  • added: ctor ProviderNotFoundException( this.valueType, this.widgetType, )
  • added: ctor ProxyProvider0({ Key key, Create<R> create, @required R Function(BuildContext context, R value) update, UpdateShouldNotify<R> updateShouldNotify, Dispose<R> dispose, bool lazy, TransitionBuilder builder, Widget child, })
  • added: extension ReadContext on BuildContext
  • added: extension SelectContext on BuildContext
  • added: extension WatchContext on BuildContext
  • added: field InheritedProvider.builder: final TransitionBuilder
  • added: field ProviderNotFoundException.valueType: final Type
  • added: field ProviderNotFoundException.widgetType: final Type
  • added: get InheritedContext.hasValue: bool
  • added: get InheritedContext.value: T
  • added: method Consumer.buildWithChild(BuildContext context, Widget child): Widget
  • added: method Consumer2.buildWithChild(BuildContext context, Widget child): Widget
  • added: method Consumer3.buildWithChild(BuildContext context, Widget child): Widget
  • added: method Consumer4.buildWithChild(BuildContext context, Widget child): Widget
  • added: method Consumer5.buildWithChild(BuildContext context, Widget child): Widget
  • added: method Consumer6.buildWithChild(BuildContext context, Widget child): Widget
  • added: method InheritedContext.markNeedsNotifyDependents(): void
  • added: method InheritedProvider.buildWithChild(BuildContext context, Widget child): Widget
  • added: method InheritedProvider.createElement(): _InheritedProviderElement<T>
  • added: method InheritedProvider.debugFillProperties(DiagnosticPropertiesBuilder properties): void
  • added: method ProviderNotFoundException.toString(): String
  • added: method ReadContext.read<T>(): T
  • added: method ReassembleHandler.reassemble(): void
  • added: method SelectContext.select<T, R>(R Function(T value) selector): R
  • added: method Selector0.Function(BuildContext): T
  • added: method WatchContext.watch<T>(): T
  • added: typedef Create<T> = T Function(BuildContext context)
  • added: typedef DeferredStartListening<T, R> = VoidCallback Function( InheritedContext<R> context, void Function(R value) setState, T controller, R value, )
  • added: typedef Dispose<T> = void Function(BuildContext context, T value)
  • added: typedef Locator = T Function<T>()
  • added: typedef ShouldRebuild<T> = bool Function(T previous, T next)
  • added: typedef StartListening<T> = VoidCallback Function( InheritedContext<T> element, T value)