oscillator.dart 558 B

123456789101112131415161718192021222324252627282930313233
  1. import 'dart:async';
  2. import 'package:xterm/utli/observable.dart';
  3. class Oscillator with Observable {
  4. Oscillator(this.duration);
  5. Oscillator.ms(int ms) : duration = Duration(milliseconds: ms);
  6. final Duration duration;
  7. var _value = true;
  8. Timer? _timer;
  9. void _onOscillation(_) {
  10. _value = !_value;
  11. notifyListeners();
  12. }
  13. bool get value {
  14. return _value;
  15. }
  16. void start() {
  17. if (_timer != null) return;
  18. _timer = Timer.periodic(duration, _onOscillation);
  19. }
  20. void stop() {
  21. _timer?.cancel();
  22. _timer = null;
  23. }
  24. }