otel_command_it 0.1.0-beta.1
otel_command_it: ^0.1.0-beta.1 copied to clipboard
OpenTelemetry instrumentation for package:command_it — Thomas Burkhart's renamed flutter_command. Wraps every Command execution in a CLIENT-kind span so you can see how long each UI-triggered action t [...]
Changelog #
0.1.0-beta.1 - 2026-05-14 #
Added #
Command.runTraced(param, spanName)— sync executor wrapped in a CLIENT-kind span. (Mirrorscommand_it9.x's renamedrunmethod; the oldexecuteis deprecated upstream.)Command.runAsyncTraced(param, spanName)— async executor wrapped in a span; awaits the future before closing.- Span shape:
command_it <name>withcommand.name,command.system=command_it,command.result=success/error. Errors geterror.type+recordException+Errorstatus, then rethrow. - Local
CommandItSemanticsenum (implementsOTelSemantic). - Zone-scoped suppression via
runWithoutCommandItInstrumentation()/Async(). - Six
flutter_testtests using the canonical_helpers/otel_test_harness.dart.
Design notes #
command_itis the renamedflutter_command; the API is the same exceptexecute→runandexecuteWithFuture→runAsync. If you're on the legacy package, seeotel_flutter_command.- We instrument at the call site (extension methods on
Command) rather than via the package's global hooks for the same reasons documented inotel_flutter_command— the globalloggingHandlerfires only at end of execution (can't measure duration) and the per-commandresultsnotifier filters no-op updates by==(sync void commands emit no event at all). - The async-throw path needs either a local error handler or a
Command.globalExceptionHandlerregistered; otherwiserunAsyncrethrows synchronously and the future never completes. This is a property ofcommand_it9.x, not the wrapper.