From 33cc45c84e8933bce2910d34eebe7ceaff07bf2b Mon Sep 17 00:00:00 2001 From: Chun-Heng Tai Date: Fri, 10 Jul 2026 20:31:28 -0700 Subject: [PATCH] update --- packages/listen/CHANGELOG.md | 4 ++++ packages/listen/lib/src/listen.dart | 9 ++++----- packages/listen/pubspec.yaml | 2 +- packages/listen/test/listen_test.dart | 10 +++++----- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/listen/CHANGELOG.md b/packages/listen/CHANGELOG.md index 7ca068c..e0d67d0 100644 --- a/packages/listen/CHANGELOG.md +++ b/packages/listen/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.0-beta.4 + +- `ErrorContext` is now a non-nullable parameter. + ## 1.0.0-beta.3 - Updates `ErrorCallback` to pass the raw error object and original `StackTrace`. diff --git a/packages/listen/lib/src/listen.dart b/packages/listen/lib/src/listen.dart index 825296b..218b6d6 100644 --- a/packages/listen/lib/src/listen.dart +++ b/packages/listen/lib/src/listen.dart @@ -20,8 +20,7 @@ enum ErrorContext { } /// Signature of callbacks that are called when an error is reported by a listener or assertion. -typedef ErrorCallback = - void Function(Object error, StackTrace? stackTrace, {ErrorContext? context}); +typedef ErrorCallback = void Function(Object error, StackTrace? stackTrace, ErrorContext context); /// Signature of callbacks that are called when an object is created. /// @@ -71,7 +70,7 @@ abstract class Listenable { /// Error callback that is called when an error is thrown by a listener or assertion. /// /// By default, errors are rethrown preserving their original [StackTrace]. - static ErrorCallback onError = (Object error, StackTrace? stackTrace, {ErrorContext? context}) { + static ErrorCallback onError = (Object error, StackTrace? stackTrace, ErrorContext context) { Error.throwWithStackTrace(error, stackTrace ?? StackTrace.current); }; @@ -187,7 +186,7 @@ mixin class ChangeNotifier implements Listenable { 'can no longer be used.', ), StackTrace.current, - context: ErrorContext.assertion, + ErrorContext.assertion, ); } return true; @@ -437,7 +436,7 @@ mixin class ChangeNotifier implements Listenable { try { _listeners[i]?.call(); } catch (exception, stack) { - Listenable.onError(exception, stack, context: ErrorContext.listener); + Listenable.onError(exception, stack, ErrorContext.listener); } } diff --git a/packages/listen/pubspec.yaml b/packages/listen/pubspec.yaml index b2f8460..ac289c9 100644 --- a/packages/listen/pubspec.yaml +++ b/packages/listen/pubspec.yaml @@ -5,7 +5,7 @@ name: listen description: A package to notify state changes to interested listeners in pure Dart. repository: https://github.com/flutter/core-packages/tree/main/packages/listen issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+listen%22 -version: 1.0.0-beta.3 +version: 1.0.0-beta.4 environment: sdk: ^3.10.0 diff --git a/packages/listen/test/listen_test.dart b/packages/listen/test/listen_test.dart index 4f8ca0f..8994afd 100644 --- a/packages/listen/test/listen_test.dart +++ b/packages/listen/test/listen_test.dart @@ -60,7 +60,7 @@ void main() { setUp(() { lastError = null; lastContext = null; - Listenable.onError = (Object error, StackTrace? stackTrace, {ErrorContext? context}) { + Listenable.onError = (Object error, StackTrace? stackTrace, ErrorContext context) { lastError = error; lastContext = context; }; @@ -116,7 +116,7 @@ void main() { final ErrorCallback original = Listenable.onError; final List errors = []; - Listenable.onError = (Object error, StackTrace? stackTrace, {ErrorContext? context}) { + Listenable.onError = (Object error, StackTrace? stackTrace, ErrorContext context) { errors.add(error); }; addTearDown(() { @@ -190,7 +190,7 @@ void main() { test('Listenable.onError preserves runtime exception types', () { final List errors = []; final ErrorCallback original = Listenable.onError; - Listenable.onError = (Object error, StackTrace? stackTrace, {ErrorContext? context}) { + Listenable.onError = (Object error, StackTrace? stackTrace, ErrorContext context) { errors.add(error); }; addTearDown(() { @@ -210,7 +210,7 @@ void main() { test('Listenable.onError default implementation rethrows and preserves StackTrace', () { final stack = StackTrace.fromString('test_stack_trace_marker'); try { - originalOnError(const FormatException('bad format'), stack); + originalOnError(const FormatException('bad format'), stack, ErrorContext.listener); fail('Expected originalOnError to throw'); } catch (e, s) { expect(e, isA()); @@ -221,7 +221,7 @@ void main() { test('Listenable.onError reports correct ErrorContext across all failure types', () { final List contexts = []; final ErrorCallback original = Listenable.onError; - Listenable.onError = (Object error, StackTrace? stackTrace, {ErrorContext? context}) { + Listenable.onError = (Object error, StackTrace? stackTrace, ErrorContext context) { contexts.add(context); }; addTearDown(() {