Skip to content

Commit

Permalink
Add Ref.listen(weak: true)
Browse files Browse the repository at this point in the history
  • Loading branch information
rrousselGit authored Mar 16, 2024
2 parents 2701c74 + f96031e commit 39db426
Show file tree
Hide file tree
Showing 200 changed files with 2,297 additions and 1,680 deletions.
4 changes: 2 additions & 2 deletions examples/counter/lib/main.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

34 changes: 17 additions & 17 deletions examples/pub/lib/detail.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions examples/pub/lib/search.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions examples/stackoverflow/lib/common.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions examples/stackoverflow/lib/question.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions examples/stackoverflow/lib/tag.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,9 @@ final class ChangeNotifierProvider<NotifierT extends ChangeNotifier?>
@internal
@override
ChangeNotifierProviderElement<NotifierT> $createElement(
ProviderContainer container,
$ProviderPointer pointer,
) {
return ChangeNotifierProviderElement<NotifierT>._(this, container);
return ChangeNotifierProviderElement<NotifierT>._(this, pointer);
}

@mustBeOverridden
Expand All @@ -161,7 +161,7 @@ final class ChangeNotifierProvider<NotifierT extends ChangeNotifier?>
/// The element of [ChangeNotifierProvider].
class ChangeNotifierProviderElement<NotifierT extends ChangeNotifier?>
extends ProviderElement<NotifierT> {
ChangeNotifierProviderElement._(this.provider, super.container);
ChangeNotifierProviderElement._(this.provider, super.pointer);

@override
final ChangeNotifierProvider<NotifierT> provider;
Expand Down Expand Up @@ -240,8 +240,8 @@ class ChangeNotifierProviderFamily<NotifierT extends ChangeNotifier?, Arg>
) {
return $FamilyOverride(
from: this,
createElement: (container, provider) {
provider as ChangeNotifierProvider<NotifierT>;
createElement: (pointer) {
final provider = pointer.origin as ChangeNotifierProvider<NotifierT>;

return ChangeNotifierProvider<NotifierT>.internal(
(ref) => create(ref, provider.argument as Arg),
Expand All @@ -251,7 +251,7 @@ class ChangeNotifierProviderFamily<NotifierT extends ChangeNotifier?, Arg>
dependencies: null,
allTransitiveDependencies: null,
name: null,
).$createElement(container);
).$createElement(pointer);
},
);
}
Expand Down
4 changes: 4 additions & 0 deletions packages/riverpod/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
- `Stream/FutureProvider.overrideWithValue` was added back.
- **Breaking**: `Notifier` and variants are now recreated whenever the provider
rebuilds. This enables using `Ref.mounted` to check dispose.
- Added `Ref.listen(..., weak: true)`.
When specifying `weak: true`, the listener will not cause the provider to be
initialized. This is useful when wanting to react to changes to a provider,
but not trigger a network request if not necessary.
- An error is now thrown when trying to override a provider twice in the same
`ProviderContainer`.
- Disposing a `ProviderContainer` now disposes of all of its sub `ProviderContainers` too.
Expand Down
3 changes: 2 additions & 1 deletion packages/riverpod/lib/riverpod.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ export 'src/framework.dart'
Node,
ProviderElementProxy,
OnError,
WeakNode,
ProviderContainerTest,
DebugRiverpodDevtoolBiding,
TransitiveFamilyOverride,
TransitiveProviderOverride,
ProviderPointer,
$ProviderPointer,
UnmountedRefException,
ProviderPointerManager,
ProviderDirectory,
Expand Down
6 changes: 0 additions & 6 deletions packages/riverpod/lib/src/common/listenable.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,6 @@ class ProxyElementValueListenable<T> extends _ValueListenable<T> {
_notifyError(value.error, value.stackTrace);
}
}

/// Updates the [result] of this [ProxyElementValueListenable] without invoking listeners.
// ignore: use_setters_to_change_properties, non_constant_identifier_names
void UNSAFE_setResultWithoutNotifyingListeners(Result<T>? value) {
_result = value;
}
}

class _ValueListenable<T> {
Expand Down
Loading

0 comments on commit 39db426

Please sign in to comment.