// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /// @docImport 'package:flutter/widgets.dart'; library; import 'find.dart'; /// A Flutter Driver command that taps on a target widget located by [finder]. class Tap extends CommandWithTarget { /// Creates a tap command to tap on a widget located by [finder]. Tap(super.finder, {super.timeout}); /// Deserializes this command from the value generated by [serialize]. Tap.deserialize(super.json, super.finderFactory, {super.path}) : super.deserialize(); @override String get kind => 'tap'; } /// A Flutter Driver command that commands the driver to perform a scrolling action. class Scroll extends CommandWithTarget { /// Creates a scroll command that will attempt to scroll a scrollable view by /// dragging a widget located by the given [finder]. Scroll(super.finder, this.dx, this.dy, this.duration, this.frequency, {super.timeout}); /// Deserializes this command from the value generated by [serialize]. Scroll.deserialize(super.json, super.finderFactory, {super.path}) : dx = json.containsKey('dx') ? double.parse(json['dx']!) : throw ArgumentError.notNull(path == null ? 'dx' : '$path.dx'), dy = json.containsKey('dy') ? double.parse(json['dy']!) : throw ArgumentError.notNull(path == null ? 'dy' : '$path.dy'), duration = json.containsKey('duration') ? Duration(microseconds: int.parse(json['duration']!)) : throw ArgumentError.notNull(path == null ? 'duration' : '$path.duration'), frequency = json.containsKey('frequency') ? int.parse(json['frequency']!) : throw ArgumentError.notNull(path == null ? 'frequency' : '$path.frequency'), super.deserialize(); /// Delta X offset per move event. final double dx; /// Delta Y offset per move event. final double dy; /// The duration of the scrolling action. final Duration duration; /// The frequency in Hz of the generated move events. final int frequency; @override String get kind => 'scroll'; @override Map serialize() => super.serialize() ..addAll({ 'dx': '$dx', 'dy': '$dy', 'duration': '${duration.inMicroseconds}', 'frequency': '$frequency', }); } /// A Flutter Driver command that commands the driver to ensure that the element /// represented by [finder] has been scrolled completely into view. class ScrollIntoView extends CommandWithTarget { /// Creates this command given a [finder] used to locate the widget to be /// scrolled into view. ScrollIntoView(super.finder, {this.alignment = 0.0, super.timeout}); /// Deserializes this command from the value generated by [serialize]. ScrollIntoView.deserialize(super.json, super.finderFactory, {super.path}) : alignment = json.containsKey('alignment') ? double.parse(json['alignment']!) : 0.0, super.deserialize(); /// How the widget should be aligned. /// /// This value is passed to [Scrollable.ensureVisible] as the value of its /// argument of the same name. /// /// Defaults to 0.0. final double alignment; @override String get kind => 'scrollIntoView'; @override Map serialize() => super.serialize()..addAll({'alignment': '$alignment'}); }