// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:html'; import 'package:stream_transform/stream_transform.dart'; void main() { var firstInput = document.querySelector('#first_input') as InputElement; var secondInput = document.querySelector('#second_input') as InputElement; var output = document.querySelector('#output')!; _inputValues(firstInput) .combineLatest(_inputValues(secondInput), (first, second) => 'First: $first, Second: $second') .tap((v) { print('Saw: $v'); }).forEach((v) { output.text = v; }); } Stream _inputValues(InputElement element) => element.onKeyUp .debounce(const Duration(milliseconds: 100)) .map((_) => element.value);