Upgrading provider 3 to 4
Breaking3.2.0 → 4.3.3Breaking4Platform1Deprecated2New7Changed10Fixed11Other8
BreakingUpgrade verdict
4 breaking changes and a platform requirement change.
In plain terms
- 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.
Must act 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).
What you must change
Breaking4
Renames ProviderNotFoundError to ProviderNotFoundException so Provider.of can be used in try/catch without a warning.
ProviderNotFoundErrorProviderNotFoundExceptionProvider.ofRenames initialBuilder and builder of *ProxyProvider to create and update.
initialBuilderbuildercreateupdateProxyProviderRenames the builder parameter of *Provider to create.
buildercreateProviderRemoves inference of the
listen flag of Provider.of and throws in debug mode when listen is true where it should not be.Provider.oflistenPlatform1
Now requires Flutter >= 1.6.0 and Dart >= 2.7.0.
Deprecations to plan for
Deprecated2
Undeprecates ValueListenableProvider; only its default constructor remains deprecated while the .value constructor is kept.
ValueListenableProviderValueListenableProvider.valueMarks
ValueListenableProvider as deprecated.ValueListenableProviderAPI changes
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)