
## ๐ดย fixtures/external/flutter/provider-test-results.json
**269** tests were completed in **0ms** with **268** passed, **1** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|๐ข [test/builder_test.dart](#r0s0)|24|||402ms|
|๐ข [test/change_notifier_provider_test.dart](#r0s1)|10|||306ms|
|๐ข [test/consumer_test.dart](#r0s2)|18|||340ms|
|๐ข [test/context_test.dart](#r0s3)|31|||698ms|
|๐ข [test/future_provider_test.dart](#r0s4)|10|||305ms|
|๐ข [test/inherited_provider_test.dart](#r0s5)|81|||1s|
|๐ข [test/listenable_provider_test.dart](#r0s6)|16|||353ms|
|๐ข [test/listenable_proxy_provider_test.dart](#r0s7)|12|||373ms|
|๐ข [test/multi_provider_test.dart](#r0s8)|3|||198ms|
|๐ข [test/provider_test.dart](#r0s9)|11|||306ms|
|๐ข [test/proxy_provider_test.dart](#r0s10)|16|||438ms|
|๐ข [test/reassemble_test.dart](#r0s11)|3|||221ms|
|๐ข [test/selector_test.dart](#r0s12)|17|||364ms|
|๐ข [test/stateful_provider_test.dart](#r0s13)|4|||254ms|
|๐ข [test/stream_provider_test.dart](#r0s14)|8|||282ms|
|๐ด [test/value_listenable_provider_test.dart](#r0s15)|4|1||327ms|
### ๐ขย test/builder_test.dart
```
ChangeNotifierProvider
๐ข default
๐ข .value
ListenableProvider
๐ข default
๐ข .value
Provider
๐ข default
๐ข .value
ProxyProvider
๐ข 0
๐ข 1
๐ข 2
๐ข 3
๐ข 4
๐ข 5
๐ข 6
MultiProvider
๐ข with 1 ChangeNotifierProvider default
๐ข with 2 ChangeNotifierProvider default
๐ข with ListenableProvider default
๐ข with Provider default
๐ข with ProxyProvider0
๐ข with ProxyProvider1
๐ข with ProxyProvider2
๐ข with ProxyProvider3
๐ข with ProxyProvider4
๐ข with ProxyProvider5
๐ข with ProxyProvider6
```
### ๐ขย test/change_notifier_provider_test.dart
```
๐ข Use builder property, not child
ChangeNotifierProvider
๐ข value
๐ข builder
๐ข builder1
๐ข builder2
๐ข builder3
๐ข builder4
๐ข builder5
๐ข builder6
๐ข builder0
```
### ๐ขย test/consumer_test.dart
```
consumer
๐ข obtains value from Provider
๐ข crashed with no builder
๐ข can be used inside MultiProvider
consumer2
๐ข obtains value from Provider
๐ข crashed with no builder
๐ข can be used inside MultiProvider
consumer3
๐ข obtains value from Provider
๐ข crashed with no builder
๐ข can be used inside MultiProvider
consumer4
๐ข obtains value from Provider
๐ข crashed with no builder
๐ข can be used inside MultiProvider
consumer5
๐ข obtains value from Provider
๐ข crashed with no builder
๐ข can be used inside MultiProvider
consumer6
๐ข obtains value from Provider
๐ข crashed with no builder
๐ข can be used inside MultiProvider
```
### ๐ขย test/context_test.dart
```
๐ข watch in layoutbuilder
๐ข select in layoutbuilder
๐ข cannot select in listView
๐ข watch in listView
๐ข watch in gridView
๐ข clears select dependencies for all dependents
BuildContext
๐ข internal selected value is updated
๐ข create can use read without being lazy
๐ข watch can be used inside InheritedProvider.update
๐ข select doesn't fail if it loads a provider that depends on other providers
๐ข don't call old selectors if the child rebuilds individually
๐ข selects throws inside click handlers
๐ข select throws if try to read dynamic
๐ข select throws ProviderNotFoundException
๐ข select throws if watch called inside the callback from build
๐ข select throws if read called inside the callback from build
๐ข select throws if select called inside the callback from build
๐ข select throws if read called inside the callback on dependency change
๐ข select throws if watch called inside the callback on dependency change
๐ข select throws if select called inside the callback on dependency change
๐ข can call read inside didChangeDependencies
๐ข select cannot be called inside didChangeDependencies
๐ข select in initState throws
๐ข watch in initState throws
๐ข read in initState works
๐ข consumer can be removed and selector stops to be called
๐ข context.select deeply compares maps
๐ข context.select deeply compares lists
๐ข context.select deeply compares iterables
๐ข context.select deeply compares sets
๐ข context.watch listens to value changes
```
### ๐ขย test/future_provider_test.dart
```
๐ข works with MultiProvider
๐ข (catchError) previous future completes after transition is no-op
๐ข previous future completes after transition is no-op
๐ข transition from future to future preserve state
๐ข throws if future has error and catchError is missing
๐ข calls catchError if present and future has error
๐ข works with null
๐ข create and dispose future with builder
๐ข FutureProvider() crashes if builder is null
FutureProvider()
๐ข crashes if builder is null
```
### ๐ขย test/inherited_provider_test.dart
```
๐ข regression test #377
๐ข rebuild on dependency flags update
๐ข properly update debug flags if a create triggers another deferred create
๐ข properly update debug flags if a create triggers another deferred create
๐ข properly update debug flags if an update triggers another create/update
๐ข properly update debug flags if a create triggers another create/update
๐ข Provider.of(listen: false) outside of build works when it loads a provider
๐ข new value is available in didChangeDependencies
๐ข builder receives the current value and updates independently from `update`
๐ข builder can _not_ rebuild when provider updates
๐ข builder rebuilds if provider is recreated
๐ข provider.of throws if listen:true outside of the widget tree
๐ข InheritedProvider throws if no child is provided with default constructor
๐ข InheritedProvider throws if no child is provided with value constructor
๐ข DeferredInheritedProvider throws if no child is provided with default constructor
๐ข DeferredInheritedProvider throws if no child is provided with value constructor
๐ข startListening markNeedsNotifyDependents
๐ข InheritedProvider can be subclassed
๐ข DeferredInheritedProvider can be subclassed
๐ข can be used with MultiProvider
๐ข throw if the widget ctor changes
๐ข InheritedProvider lazy loading can be disabled
๐ข InheritedProvider.value lazy loading can be disabled
๐ข InheritedProvider subclass don't have to specify default lazy value
๐ข DeferredInheritedProvider lazy loading can be disabled
๐ข DeferredInheritedProvider.value lazy loading can be disabled
๐ข selector
๐ข can select multiple types from same provider
๐ข can select same type on two different providers
๐ข can select same type twice on same provider
๐ข Provider.of has a proper error message if context is null
diagnostics
๐ข InheritedProvider.value
๐ข InheritedProvider doesn't break lazy loading
๐ข InheritedProvider show if listening
๐ข DeferredInheritedProvider.value
๐ข DeferredInheritedProvider
InheritedProvider.value()
๐ข markNeedsNotifyDependents during startListening is noop
๐ข startListening called again when create returns new value
๐ข startListening
๐ข stopListening not called twice if rebuild doesn't have listeners
๐ข removeListener cannot be null
๐ข pass down current value
๐ข default updateShouldNotify
๐ข custom updateShouldNotify
InheritedProvider()
๐ข hasValue
๐ข provider calls update if rebuilding only due to didChangeDependencies
๐ข provider notifying dependents doesn't call update
๐ข update can call Provider.of with listen:true
๐ข update lazy loaded can call Provider.of with listen:true
๐ข markNeedsNotifyDependents during startListening is noop
๐ข update can obtain parent of the same type than self
๐ข _debugCheckInvalidValueType
๐ข startListening
๐ข startListening called again when create returns new value
๐ข stopListening not called twice if rebuild doesn't have listeners
๐ข removeListener cannot be null
๐ข fails if initialValueBuilder calls inheritFromElement/inheritFromWiggetOfExactType
๐ข builder is called on every rebuild and after a dependency change
๐ข builder with no updateShouldNotify use ==
๐ข builder calls updateShouldNotify callback
๐ข initialValue is transmitted to valueBuilder
๐ข calls builder again if dependencies change
๐ข exposes initialValue if valueBuilder is null
๐ข call dispose on unmount
๐ข builder unmount, dispose not called if value never read
๐ข call dispose after new value
๐ข valueBuilder works without initialBuilder
๐ข calls initialValueBuilder lazily once
๐ข throws if both builder and initialBuilder are missing
DeferredInheritedProvider.value()
๐ข hasValue
๐ข startListening
๐ข stopListening cannot be null
๐ข startListening doesn't need setState if already initialized
๐ข setState without updateShouldNotify
๐ข setState with updateShouldNotify
๐ข startListening never leave the widget uninitialized
๐ข startListening called again on controller change
DeferredInheritedProvider()
๐ข create can't call inherited widgets
๐ข creates the value lazily
๐ข dispose
๐ข dispose no-op if never built
```
### ๐ขย test/listenable_provider_test.dart
```
ListenableProvider
๐ข works with MultiProvider
๐ข asserts that the created notifier can have listeners
๐ข don't listen again if listenable instance doesn't change
๐ข works with null (default)
๐ข works with null (create)
๐ข stateful create called once
๐ข dispose called on unmount
๐ข dispose can be null
๐ข changing listenable rebuilds descendants
๐ข rebuilding with the same provider don't rebuilds descendants
๐ข notifylistener rebuilds descendants
ListenableProvider value constructor
๐ข pass down key
๐ข changing the Listenable instance rebuilds dependents
ListenableProvider stateful constructor
๐ข called with context
๐ข pass down key
๐ข throws if create is null
```
### ๐ขย test/listenable_proxy_provider_test.dart
```
ListenableProxyProvider
๐ข throws if update is missing
๐ข asserts that the created notifier has no listener
๐ข asserts that the created notifier has no listener after rebuild
๐ข rebuilds dependendents when listeners are called
๐ข update returning a new Listenable disposes the previously created value and update dependents
๐ข disposes of created value
ListenableProxyProvider variants
๐ข ListenableProxyProvider
๐ข ListenableProxyProvider2
๐ข ListenableProxyProvider3
๐ข ListenableProxyProvider4
๐ข ListenableProxyProvider5
๐ข ListenableProxyProvider6
```
### ๐ขย test/multi_provider_test.dart
```
MultiProvider
๐ข throw if providers is null
๐ข MultiProvider children can only access parent providers
๐ข MultiProvider.providers with ignored child
```
### ๐ขย test/provider_test.dart
```
๐ข works with MultiProvider
Provider.of
๐ข throws if T is dynamic
๐ข listen defaults to true when building widgets
๐ข listen defaults to false outside of the widget tree
๐ข listen:false doesn't trigger rebuild
๐ข listen:true outside of the widget tree throws
Provider
๐ข throws if the provided value is a Listenable/Stream
๐ข debugCheckInvalidValueType can be disabled
๐ข simple usage
๐ข throws an error if no provider found
๐ข update should notify
```
### ๐ขย test/proxy_provider_test.dart
```
ProxyProvider
๐ข throws if the provided value is a Listenable/Stream
๐ข debugCheckInvalidValueType can be disabled
๐ข create creates initial value
๐ข consume another providers
๐ข rebuild descendants if value change
๐ข call dispose when unmounted with the latest result
๐ข don't rebuild descendants if value doesn't change
๐ข pass down updateShouldNotify
๐ข works with MultiProvider
๐ข update callback can trigger descendants setState synchronously
๐ข throws if update is null
ProxyProvider variants
๐ข ProxyProvider2
๐ข ProxyProvider3
๐ข ProxyProvider4
๐ข ProxyProvider5
๐ข ProxyProvider6
```
### ๐ขย test/reassemble_test.dart
```
๐ข ReassembleHandler
๐ข unevaluated create
๐ข unevaluated create
```
### ๐ขย test/selector_test.dart
```
๐ข asserts that builder/selector are not null
๐ข Deep compare maps by default
๐ข Deep compare iterables by default
๐ข Deep compare sets by default
๐ข Deep compare lists by default
๐ข custom shouldRebuid
๐ข passes `child` and `key`
๐ข calls builder if the callback changes
๐ข works with MultiProvider
๐ข don't call builder again if it rebuilds but selector returns the same thing
๐ข call builder again if it rebuilds abd selector returns the a different variable
๐ข Selector
๐ข Selector2
๐ข Selector3
๐ข Selector4
๐ข Selector5
๐ข Selector6
```
### ๐ขย test/stateful_provider_test.dart
```
๐ข asserts
๐ข works with MultiProvider
๐ข calls create only once
๐ข dispose
```
### ๐ขย test/stream_provider_test.dart
```
๐ข works with MultiProvider
๐ข transition from stream to stream preserve state
๐ข throws if stream has error and catchError is missing
๐ข calls catchError if present and stream has error
๐ข works with null
๐ข StreamProvider() crashes if builder is null
StreamProvider()
๐ข create and dispose stream with builder
๐ข crashes if builder is null
```
### ๐ดย test/value_listenable_provider_test.dart
```
valueListenableProvider
๐ข rebuilds when value change
๐ข don't rebuild dependents by default
๐ข pass keys
๐ข don't listen again if stream instance doesn't change
๐ด pass updateShouldNotify
The following TestFailure object was thrown running a test:
Expected: <2>
Actual: <1>
Unexpected number of calls
```