cancelation_token 1.1.0 copy "cancelation_token: ^1.1.0" to clipboard
cancelation_token: ^1.1.0 copied to clipboard

This package provides an interface for cancelation tokens as well as various implementations (cancelable, timeout, composite...).

cancelation_token #

This package provides an interface for cancelation tokens as well as various implementations:

  • CancelableToken which can be canceled programmatically;
  • CompositeToken which is canceled when any or all tokens are canceled;
  • TimeoutToken which is canceled after a timeout period.

Example #

Cancel a long-running execution after a timeout.

import 'package:cancelation_token/cancelation_token.dart';

void main() async {
  final timeout = Duration(seconds: 5);
  final errorOnTimeout = CanceledException.withStackTrace('Too long!');
  final token = TimeoutToken(timeout, errorOnTimeout);
  token.ensureStarted();

  try {
    await longProcess(token);
  } on CanceledException catch (ex, st) {
    print(ex.message);
    print(ex.stackTrace);
    print(st);
  }
}

Future<void> longProcess(CancelationToken token) async {
  // very long indeed!
  while (true) {
    token.throwIfCanceled();
    await Future.delayed(const Duration(milliseconds: 100));
  }
}
2
likes
160
points
6.92k
downloads

Publisher

unverified uploader

Weekly Downloads

This package provides an interface for cancelation tokens as well as various implementations (cancelable, timeout, composite...).

Repository (GitHub)

Documentation

API reference

License

MIT (license)

More

Packages that depend on cancelation_token