mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-02 11:43:19 +08:00
fix: Resolve breaking changes from Riverpod affecting flame_riverpod (#3080)
Changes to how support for manual listeners is implemented in flutter_riverpod 2.5.1 (released 4 days ago) have affected flame_riverpod - specifically, the implementation of ProviderSubscription. This PR updates the implementation of manual listeners in flame_riverpod in the same manner that flutter_riverpod has.
This commit is contained in:
@ -9,7 +9,7 @@ dependencies:
|
||||
flame_riverpod: ^5.3.0
|
||||
flutter:
|
||||
sdk: flutter
|
||||
flutter_riverpod: ^2.1.3
|
||||
flutter_riverpod: ^2.5.1
|
||||
|
||||
dev_dependencies:
|
||||
flame_lint: ^0.2.0
|
||||
|
||||
@ -219,8 +219,13 @@ class RiverpodAwareGameWidgetState<T extends Game> extends GameWidgetState<T>
|
||||
_assertNotDisposed();
|
||||
final listeners = _manualListeners ??= [];
|
||||
|
||||
// Reading the container using "listen:false" to guarantee that this can
|
||||
// be used inside initState.
|
||||
final container = ProviderScope.containerOf(context, listen: false);
|
||||
|
||||
final sub = _ListenManual(
|
||||
ProviderScope.containerOf(context, listen: false).listen(
|
||||
container,
|
||||
container.listen(
|
||||
provider,
|
||||
listener,
|
||||
onError: onError,
|
||||
@ -234,16 +239,19 @@ class RiverpodAwareGameWidgetState<T extends Game> extends GameWidgetState<T>
|
||||
}
|
||||
}
|
||||
|
||||
class _ListenManual<T> implements ProviderSubscription<T> {
|
||||
_ListenManual(this._subscription, this._element);
|
||||
class _ListenManual<T> extends ProviderSubscription<T> {
|
||||
_ListenManual(super.source, this._subscription, this._element);
|
||||
|
||||
final ProviderSubscription<T> _subscription;
|
||||
final RiverpodAwareGameWidgetState _element;
|
||||
|
||||
@override
|
||||
void close() {
|
||||
_subscription.close();
|
||||
_element._manualListeners?.remove(this);
|
||||
if (!closed) {
|
||||
_subscription.close();
|
||||
_element._manualListeners?.remove(this);
|
||||
}
|
||||
super.close();
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user