Skip to content

Commit

Permalink
Fix "dependencies" not working for ChangeNotifierProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
rrousselGit committed Oct 9, 2021
1 parent 90d5aa4 commit 8e2947e
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class AutoDisposeChangeNotifierProvider<Notifier extends ChangeNotifier>
ref.onDispose(notifier.dispose);

return notifier;
});
}, dependencies: dependencies);

@override
Notifier create(AutoDisposeProviderElementBase<Notifier> ref) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class ChangeNotifierProvider<Notifier extends ChangeNotifier>
ref.onDispose(notifier.dispose);

return notifier;
});
}, dependencies: dependencies);

@override
Notifier create(ProviderElementBase<Notifier> ref) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,23 @@ void main() {
expect(root.getAllProviderElements(), isEmpty);
});
});

test('can be auto-scoped', () async {
final dep = Provider((ref) => 0);
final provider = ChangeNotifierProvider.autoDispose(
(ref) => ValueNotifier(ref.watch(dep)),
dependencies: [dep],
);
final root = createContainer();
final container = createContainer(
parent: root,
overrides: [dep.overrideWithValue(42)],
);

expect(container.read(provider).value, 42);
expect(container.read(provider.notifier).value, 42);

expect(root.getAllProviderElements(), isEmpty);
});
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,24 @@ void main() {
expect(notifier2.mounted, true);
expect(notifier.mounted, true);
});

test('ChangeNotifier can be auto-scoped', () async {
final dep = Provider((ref) => 0);
final provider = ChangeNotifierProvider(
(ref) => ValueNotifier(ref.watch(dep)),
dependencies: [dep],
);
final root = createContainer();
final container = createContainer(
parent: root,
overrides: [dep.overrideWithValue(42)],
);

expect(container.read(provider).value, 42);
expect(container.read(provider.notifier).value, 42);

expect(root.getAllProviderElements(), isEmpty);
});
}

class TestNotifier extends ChangeNotifier {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,25 @@ void main() {
);
expect(root.getAllProviderElementsInOrder(), isEmpty);
});

test('ChangeNotifier can be auto-scoped', () async {
final dep = Provider((ref) => 0);
final provider =
ChangeNotifierProvider.autoDispose.family<ValueNotifier<int>, int>(
(ref, i) => ValueNotifier(ref.watch(dep) + i),
dependencies: [dep],
);
final root = createContainer();
final container = createContainer(
parent: root,
overrides: [dep.overrideWithValue(42)],
);

expect(container.read(provider(10)).value, 52);
expect(container.read(provider(10).notifier).value, 52);

expect(root.getAllProviderElements(), isEmpty);
});
});
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,23 @@ void main() {
expect(root.getAllProviderElementsInOrder(), isEmpty);
});
});

test('ChangeNotifier can be auto-scoped', () async {
final dep = Provider((ref) => 0);
final provider = ChangeNotifierProvider.family<ValueNotifier<int>, int>(
(ref, i) => ValueNotifier(ref.watch(dep) + i),
dependencies: [dep],
);
final root = createContainer();
final container = createContainer(
parent: root,
overrides: [dep.overrideWithValue(42)],
);

expect(container.read(provider(10)).value, 52);
expect(container.read(provider(10).notifier).value, 52);

expect(root.getAllProviderElements(), isEmpty);
});
});
}

0 comments on commit 8e2947e

Please sign in to comment.