Make dartdoc warnings fatal (& cleanup of warnings) (#62367)
This commit is contained in:
parent
e17a721951
commit
f4e10b4fb5
@ -13,9 +13,24 @@ dartdoc:
|
|||||||
command: ["dev/snippets/lib/main.dart", "--type=sample", "--dartpad"]
|
command: ["dev/snippets/lib/main.dart", "--type=sample", "--dartpad"]
|
||||||
description: "Creates full application sample code documentation output from embedded documentation samples and displays it in an embedded DartPad."
|
description: "Creates full application sample code documentation output from embedded documentation samples and displays it in an embedded DartPad."
|
||||||
errors:
|
errors:
|
||||||
- tool-error # enabled by default
|
# The following are always errors:
|
||||||
- duplicate-file # enabled by default
|
- duplicate-file
|
||||||
- invalid-parameter # enabled by default
|
- invalid-parameter
|
||||||
- unresolved-export # enabled by default
|
- tool-error
|
||||||
- unknown-macro # a {@macro foo} reference cannot be resolved
|
- unresolved-export
|
||||||
- invalid-parameter # an invalid parameter is passed to a {@foo x y} directive
|
# The following are elevated from warnings because we currently don't
|
||||||
|
# fail on warnings:
|
||||||
|
- ambiguous-doc-reference
|
||||||
|
- ambiguous-reexport
|
||||||
|
- ignored-canonical-for
|
||||||
|
- no-canonical-found
|
||||||
|
- not-implemented
|
||||||
|
- no-library-level-docs
|
||||||
|
- category-order-gives-missing-package-name
|
||||||
|
- reexported-private-api-across-packages
|
||||||
|
# - unresolved-doc-reference # Too many failures, needs clean-up
|
||||||
|
- broken-link
|
||||||
|
- unknown-macro
|
||||||
|
- orphaned-file
|
||||||
|
- unknown-file
|
||||||
|
- missing-from-search-index
|
||||||
|
@ -144,12 +144,7 @@ Future<void> main(List<String> arguments) async {
|
|||||||
'--footer-text', 'lib/footer.html',
|
'--footer-text', 'lib/footer.html',
|
||||||
'--allow-warnings-in-packages',
|
'--allow-warnings-in-packages',
|
||||||
<String>[
|
<String>[
|
||||||
'Flutter',
|
|
||||||
'flutter',
|
'flutter',
|
||||||
'platform_integration',
|
|
||||||
'flutter_test',
|
|
||||||
'flutter_driver',
|
|
||||||
'flutter_localizations',
|
|
||||||
].join(','),
|
].join(','),
|
||||||
'--exclude-packages',
|
'--exclude-packages',
|
||||||
<String>[
|
<String>[
|
||||||
|
@ -229,11 +229,6 @@ mixin GestureBinding on BindingBase implements HitTestable, HitTestDispatcher, H
|
|||||||
|
|
||||||
/// Variant of [FlutterErrorDetails] with extra fields for the gesture
|
/// Variant of [FlutterErrorDetails] with extra fields for the gesture
|
||||||
/// library's binding's pointer event dispatcher ([GestureBinding.dispatchEvent]).
|
/// library's binding's pointer event dispatcher ([GestureBinding.dispatchEvent]).
|
||||||
///
|
|
||||||
/// See also:
|
|
||||||
///
|
|
||||||
/// * [FlutterErrorDetailsForPointerRouter], which is also used by the
|
|
||||||
/// gesture library.
|
|
||||||
class FlutterErrorDetailsForPointerEventDispatcher extends FlutterErrorDetails {
|
class FlutterErrorDetailsForPointerEventDispatcher extends FlutterErrorDetails {
|
||||||
/// Creates a [FlutterErrorDetailsForPointerEventDispatcher] object with the given
|
/// Creates a [FlutterErrorDetailsForPointerEventDispatcher] object with the given
|
||||||
/// arguments setting the object's properties.
|
/// arguments setting the object's properties.
|
||||||
|
@ -81,7 +81,7 @@ class BorderSide {
|
|||||||
///
|
///
|
||||||
/// If one of the sides is zero-width with [BorderStyle.none], then the other
|
/// If one of the sides is zero-width with [BorderStyle.none], then the other
|
||||||
/// side is return as-is. If both of the sides are zero-width with
|
/// side is return as-is. If both of the sides are zero-width with
|
||||||
/// [BorderStyle.none], then [BorderSide.zero] is returned.
|
/// [BorderStyle.none], then [BorderSide.none] is returned.
|
||||||
///
|
///
|
||||||
/// The arguments must not be null.
|
/// The arguments must not be null.
|
||||||
static BorderSide merge(BorderSide a, BorderSide b) {
|
static BorderSide merge(BorderSide a, BorderSide b) {
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
import 'dart:ui' show Canvas, Clip, Path, Paint, Rect, RRect;
|
import 'dart:ui' show Canvas, Clip, Path, Paint, Rect, RRect;
|
||||||
|
|
||||||
/// Clip utilities used by [PaintingContext] and [TestRecordingPaintingContext].
|
/// Clip utilities used by [PaintingContext].
|
||||||
abstract class ClipContext {
|
abstract class ClipContext {
|
||||||
/// The canvas on which to paint.
|
/// The canvas on which to paint.
|
||||||
Canvas get canvas;
|
Canvas get canvas;
|
||||||
|
@ -34,12 +34,12 @@ HttpClientProvider debugNetworkImageHttpClientProvider;
|
|||||||
|
|
||||||
typedef PaintImageCallback = void Function(ImageSizeInfo);
|
typedef PaintImageCallback = void Function(ImageSizeInfo);
|
||||||
|
|
||||||
/// Tracks the bytes used by a [ui.Image] compared to the bytes needed to paint
|
/// Tracks the bytes used by a [dart:ui.Image] compared to the bytes needed to
|
||||||
/// that image without scaling it.
|
/// paint that image without scaling it.
|
||||||
@immutable
|
@immutable
|
||||||
class ImageSizeInfo {
|
class ImageSizeInfo {
|
||||||
/// Creates an object to track the backing size of a [ui.Image] compared to
|
/// Creates an object to track the backing size of a [dart:ui.Image] compared
|
||||||
/// its display size on a [Canvas].
|
/// to its display size on a [Canvas].
|
||||||
///
|
///
|
||||||
/// This class is used by the framework when it paints an image to a canvas
|
/// This class is used by the framework when it paints an image to a canvas
|
||||||
/// to report to `dart:developer`'s [postEvent], as well as to the
|
/// to report to `dart:developer`'s [postEvent], as well as to the
|
||||||
|
@ -661,7 +661,7 @@ class RadialGradient extends Gradient {
|
|||||||
///
|
///
|
||||||
/// For example, if a radial gradient is painted on a box that is
|
/// For example, if a radial gradient is painted on a box that is
|
||||||
/// 100.0 pixels wide and 200.0 pixels tall, then a radius of 1.0
|
/// 100.0 pixels wide and 200.0 pixels tall, then a radius of 1.0
|
||||||
/// will place the 1.0 stop at 100.0 pixels from the [focus].
|
/// will place the 1.0 stop at 100.0 pixels from the [focal] point.
|
||||||
///
|
///
|
||||||
/// If this value is specified and is greater than 0.0, either [focal] or
|
/// If this value is specified and is greater than 0.0, either [focal] or
|
||||||
/// [center] must not resolve to [Offset.zero], which would fail to create
|
/// [center] must not resolve to [Offset.zero], which would fail to create
|
||||||
|
@ -637,7 +637,7 @@ abstract class AssetBundleImageProvider extends ImageProvider<AssetBundleImageKe
|
|||||||
const AssetBundleImageProvider();
|
const AssetBundleImageProvider();
|
||||||
|
|
||||||
/// Converts a key into an [ImageStreamCompleter], and begins fetching the
|
/// Converts a key into an [ImageStreamCompleter], and begins fetching the
|
||||||
/// image using [loadAsync].
|
/// image.
|
||||||
@override
|
@override
|
||||||
ImageStreamCompleter load(AssetBundleImageKey key, DecoderCallback decode) {
|
ImageStreamCompleter load(AssetBundleImageKey key, DecoderCallback decode) {
|
||||||
InformationCollector collector;
|
InformationCollector collector;
|
||||||
@ -802,8 +802,8 @@ class ResizeImage extends ImageProvider<_SizeAwareCacheKey> {
|
|||||||
///
|
///
|
||||||
/// The image will be cached regardless of cache headers from the server.
|
/// The image will be cached regardless of cache headers from the server.
|
||||||
///
|
///
|
||||||
/// When a network image is used on the Web platform, the [cacheWidth] and
|
/// When a network image is used on the Web platform, the `cacheWidth` and
|
||||||
/// [cacheHeight] parameters of the [DecoderCallback] are ignored as the Web
|
/// `cacheHeight` parameters of the [DecoderCallback] are ignored as the Web
|
||||||
/// engine delegates image decoding of network images to the Web, which does
|
/// engine delegates image decoding of network images to the Web, which does
|
||||||
/// not support custom decode sizes.
|
/// not support custom decode sizes.
|
||||||
///
|
///
|
||||||
@ -977,7 +977,7 @@ class MemoryImage extends ImageProvider<MemoryImage> {
|
|||||||
///
|
///
|
||||||
/// When fetching an image provided by the app itself, use the [assetName]
|
/// When fetching an image provided by the app itself, use the [assetName]
|
||||||
/// argument to name the asset to choose. For instance, consider a directory
|
/// argument to name the asset to choose. For instance, consider a directory
|
||||||
/// `icons` with an image `heart.png`. First, the [pubspec.yaml] of the project
|
/// `icons` with an image `heart.png`. First, the `pubspec.yaml` of the project
|
||||||
/// should specify its assets in the `flutter` section:
|
/// should specify its assets in the `flutter` section:
|
||||||
///
|
///
|
||||||
/// ```yaml
|
/// ```yaml
|
||||||
@ -1127,8 +1127,8 @@ class _ErrorImageCompleter extends ImageStreamCompleter {
|
|||||||
|
|
||||||
/// The exception thrown when the HTTP request to load a network image fails.
|
/// The exception thrown when the HTTP request to load a network image fails.
|
||||||
class NetworkImageLoadException implements Exception {
|
class NetworkImageLoadException implements Exception {
|
||||||
/// Creates a [NetworkImageLoadException] with the specified http status
|
/// Creates a [NetworkImageLoadException] with the specified http [statusCode]
|
||||||
/// [code] and the [uri]
|
/// and [uri].
|
||||||
NetworkImageLoadException({@required this.statusCode, @required this.uri})
|
NetworkImageLoadException({@required this.statusCode, @required this.uri})
|
||||||
: assert(uri != null),
|
: assert(uri != null),
|
||||||
assert(statusCode != null),
|
assert(statusCode != null),
|
||||||
|
@ -213,8 +213,8 @@ class ImageChunkEvent with Diagnosticable {
|
|||||||
///
|
///
|
||||||
/// The [ImageCache] will consider an image to be live until the listener count
|
/// The [ImageCache] will consider an image to be live until the listener count
|
||||||
/// drops to zero after adding at least one listener. The
|
/// drops to zero after adding at least one listener. The
|
||||||
/// [addOnLastListenerRemovedCallback] method is used for tracking this
|
/// [ImageStreamCompleter.addOnLastListenerRemovedCallback] method is used for
|
||||||
/// information.
|
/// tracking this information.
|
||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
|
@ -294,7 +294,7 @@ abstract class InlineSpan extends DiagnosticableTree {
|
|||||||
|
|
||||||
/// Returns the UTF-16 code unit at the given `index` in the flattened string.
|
/// Returns the UTF-16 code unit at the given `index` in the flattened string.
|
||||||
///
|
///
|
||||||
/// This only accounts for the [TextSpan.text] values and ignores [PlaceholderSpans].
|
/// This only accounts for the [TextSpan.text] values and ignores [PlaceholderSpan]s.
|
||||||
///
|
///
|
||||||
/// Returns null if the `index` is out of bounds.
|
/// Returns null if the `index` is out of bounds.
|
||||||
int codeUnitAt(int index) {
|
int codeUnitAt(int index) {
|
||||||
|
@ -54,9 +54,9 @@ class PlaceholderDimensions {
|
|||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
/// * [baseline], the baseline to align to when using
|
/// * [baseline], the baseline to align to when using
|
||||||
/// [ui.PlaceholderAlignment.baseline],
|
/// [dart:ui.PlaceholderAlignment.baseline],
|
||||||
/// [ui.PlaceholderAlignment.aboveBaseline],
|
/// [dart:ui.PlaceholderAlignment.aboveBaseline],
|
||||||
/// or [ui.PlaceholderAlignment.underBaseline].
|
/// or [dart:ui.PlaceholderAlignment.belowBaseline].
|
||||||
/// * [baselineOffset], the distance of the alphabetic baseline from the upper
|
/// * [baselineOffset], the distance of the alphabetic baseline from the upper
|
||||||
/// edge of the placeholder.
|
/// edge of the placeholder.
|
||||||
final ui.PlaceholderAlignment alignment;
|
final ui.PlaceholderAlignment alignment;
|
||||||
@ -70,7 +70,7 @@ class PlaceholderDimensions {
|
|||||||
///
|
///
|
||||||
/// * [ui.PlaceholderAlignment.baseline]
|
/// * [ui.PlaceholderAlignment.baseline]
|
||||||
/// * [ui.PlaceholderAlignment.aboveBaseline]
|
/// * [ui.PlaceholderAlignment.aboveBaseline]
|
||||||
/// * [ui.PlaceholderAlignment.underBaseline]
|
/// * [ui.PlaceholderAlignment.belowBaseline]
|
||||||
/// * [ui.PlaceholderAlignment.middle]
|
/// * [ui.PlaceholderAlignment.middle]
|
||||||
final TextBaseline baseline;
|
final TextBaseline baseline;
|
||||||
|
|
||||||
@ -318,7 +318,7 @@ class TextPainter {
|
|||||||
///
|
///
|
||||||
/// Omitting or providing null for any properties of [StrutStyle] will result in
|
/// Omitting or providing null for any properties of [StrutStyle] will result in
|
||||||
/// default values being used. It is highly recommended to at least specify a
|
/// default values being used. It is highly recommended to at least specify a
|
||||||
/// [fontSize].
|
/// [StrutStyle.fontSize].
|
||||||
///
|
///
|
||||||
/// See [StrutStyle] for details.
|
/// See [StrutStyle] for details.
|
||||||
/// {@endtemplate}
|
/// {@endtemplate}
|
||||||
|
@ -285,7 +285,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a
|
|||||||
/// ```
|
/// ```
|
||||||
/// {@end-tool}
|
/// {@end-tool}
|
||||||
///
|
///
|
||||||
/// To use a font family defined in a package, the [package] argument must be
|
/// To use a font family defined in a package, the `package` argument must be
|
||||||
/// provided. For instance, suppose the font declaration above is in the
|
/// provided. For instance, suppose the font declaration above is in the
|
||||||
/// `pubspec.yaml` of a package named `my_package` which the app depends on.
|
/// `pubspec.yaml` of a package named `my_package` which the app depends on.
|
||||||
/// Then creating the TextStyle is done as follows:
|
/// Then creating the TextStyle is done as follows:
|
||||||
|
@ -384,8 +384,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture
|
|||||||
/// sent to the GPU.
|
/// sent to the GPU.
|
||||||
///
|
///
|
||||||
/// 7. The semantics phase: All the dirty [RenderObject]s in the system have
|
/// 7. The semantics phase: All the dirty [RenderObject]s in the system have
|
||||||
/// their semantics updated (see [RenderObject.semanticsAnnotator]). This
|
/// their semantics updated. This generates the [SemanticsNode] tree. See
|
||||||
/// generates the [SemanticsNode] tree. See
|
|
||||||
/// [RenderObject.markNeedsSemanticsUpdate] for further details on marking an
|
/// [RenderObject.markNeedsSemanticsUpdate] for further details on marking an
|
||||||
/// object dirty for semantics.
|
/// object dirty for semantics.
|
||||||
///
|
///
|
||||||
|
@ -39,9 +39,9 @@ set timeDilation(double value) {
|
|||||||
/// common time base.
|
/// common time base.
|
||||||
typedef FrameCallback = void Function(Duration timeStamp);
|
typedef FrameCallback = void Function(Duration timeStamp);
|
||||||
|
|
||||||
/// Signature for [Scheduler.scheduleTask] callbacks.
|
/// Signature for [SchedulerBinding.scheduleTask] callbacks.
|
||||||
///
|
///
|
||||||
/// The type argument `T` is the task's return value. Consider [void] if the
|
/// The type argument `T` is the task's return value. Consider `void` if the
|
||||||
/// task does not return a value.
|
/// task does not return a value.
|
||||||
typedef TaskCallback<T> = T Function();
|
typedef TaskCallback<T> = T Function();
|
||||||
|
|
||||||
@ -138,14 +138,14 @@ class _FrameCallbackEntry {
|
|||||||
/// to generate a frame.
|
/// to generate a frame.
|
||||||
enum SchedulerPhase {
|
enum SchedulerPhase {
|
||||||
/// No frame is being processed. Tasks (scheduled by
|
/// No frame is being processed. Tasks (scheduled by
|
||||||
/// [WidgetsBinding.scheduleTask]), microtasks (scheduled by
|
/// [SchedulerBinding.scheduleTask]), microtasks (scheduled by
|
||||||
/// [scheduleMicrotask]), [Timer] callbacks, event handlers (e.g. from user
|
/// [scheduleMicrotask]), [Timer] callbacks, event handlers (e.g. from user
|
||||||
/// input), and other callbacks (e.g. from [Future]s, [Stream]s, and the like)
|
/// input), and other callbacks (e.g. from [Future]s, [Stream]s, and the like)
|
||||||
/// may be executing.
|
/// may be executing.
|
||||||
idle,
|
idle,
|
||||||
|
|
||||||
/// The transient callbacks (scheduled by
|
/// The transient callbacks (scheduled by
|
||||||
/// [WidgetsBinding.scheduleFrameCallback]) are currently executing.
|
/// [SchedulerBinding.scheduleFrameCallback]) are currently executing.
|
||||||
///
|
///
|
||||||
/// Typically, these callbacks handle updating objects to new animation
|
/// Typically, these callbacks handle updating objects to new animation
|
||||||
/// states.
|
/// states.
|
||||||
@ -161,14 +161,14 @@ enum SchedulerPhase {
|
|||||||
midFrameMicrotasks,
|
midFrameMicrotasks,
|
||||||
|
|
||||||
/// The persistent callbacks (scheduled by
|
/// The persistent callbacks (scheduled by
|
||||||
/// [WidgetsBinding.addPersistentFrameCallback]) are currently executing.
|
/// [SchedulerBinding.addPersistentFrameCallback]) are currently executing.
|
||||||
///
|
///
|
||||||
/// Typically, this is the build/layout/paint pipeline. See
|
/// Typically, this is the build/layout/paint pipeline. See
|
||||||
/// [WidgetsBinding.drawFrame] and [SchedulerBinding.handleDrawFrame].
|
/// [WidgetsBinding.drawFrame] and [SchedulerBinding.handleDrawFrame].
|
||||||
persistentCallbacks,
|
persistentCallbacks,
|
||||||
|
|
||||||
/// The post-frame callbacks (scheduled by
|
/// The post-frame callbacks (scheduled by
|
||||||
/// [WidgetsBinding.addPostFrameCallback]) are currently executing.
|
/// [SchedulerBinding.addPostFrameCallback]) are currently executing.
|
||||||
///
|
///
|
||||||
/// Typically, these callbacks handle cleanup and scheduling of work for the
|
/// Typically, these callbacks handle cleanup and scheduling of work for the
|
||||||
/// next frame.
|
/// next frame.
|
||||||
@ -806,7 +806,7 @@ mixin SchedulerBinding on BindingBase {
|
|||||||
/// schedules a frame, set [debugPrintScheduleFrameStacks] to true.
|
/// schedules a frame, set [debugPrintScheduleFrameStacks] to true.
|
||||||
///
|
///
|
||||||
/// Prefer using [scheduleFrame] unless it is imperative that a frame be
|
/// Prefer using [scheduleFrame] unless it is imperative that a frame be
|
||||||
/// scheduled immediately, since using [scheduleForceFrame] will cause
|
/// scheduled immediately, since using [scheduleForcedFrame] will cause
|
||||||
/// significantly higher battery usage when the device should be idle.
|
/// significantly higher battery usage when the device should be idle.
|
||||||
///
|
///
|
||||||
/// Consider using [scheduleWarmUpFrame] instead if the goal is to update the
|
/// Consider using [scheduleWarmUpFrame] instead if the goal is to update the
|
||||||
|
@ -105,9 +105,9 @@ class Ticker {
|
|||||||
/// ticking. In that case, the ticker will not call its callback, and
|
/// ticking. In that case, the ticker will not call its callback, and
|
||||||
/// [isTicking] will be false, but time will still be progressing.
|
/// [isTicking] will be false, but time will still be progressing.
|
||||||
///
|
///
|
||||||
/// This will return false if the [Scheduler.lifecycleState] is one that
|
/// This will return false if the [SchedulerBinding.lifecycleState] is one
|
||||||
/// indicates the application is not currently visible (e.g. if the device's
|
/// that indicates the application is not currently visible (e.g. if the
|
||||||
/// screen is turned off).
|
/// device's screen is turned off).
|
||||||
bool get isTicking {
|
bool get isTicking {
|
||||||
if (_future == null)
|
if (_future == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -50,7 +50,8 @@ mixin SemanticsBinding on BindingBase {
|
|||||||
/// a flag is changed.
|
/// a flag is changed.
|
||||||
///
|
///
|
||||||
/// To listen to changes to accessibility features, create a
|
/// To listen to changes to accessibility features, create a
|
||||||
/// [WidgetsBindingObserver] and listen to [didChangeAccessibilityFeatures].
|
/// [WidgetsBindingObserver] and listen to
|
||||||
|
/// [WidgetsBindingObserver.didChangeAccessibilityFeatures].
|
||||||
ui.AccessibilityFeatures get accessibilityFeatures => _accessibilityFeatures;
|
ui.AccessibilityFeatures get accessibilityFeatures => _accessibilityFeatures;
|
||||||
ui.AccessibilityFeatures _accessibilityFeatures;
|
ui.AccessibilityFeatures _accessibilityFeatures;
|
||||||
|
|
||||||
|
@ -763,8 +763,9 @@ class SemanticsProperties extends DiagnosticableTree {
|
|||||||
/// If non-null, whether the node corresponds to the root of a subtree for
|
/// If non-null, whether the node corresponds to the root of a subtree for
|
||||||
/// which a route name should be announced.
|
/// which a route name should be announced.
|
||||||
///
|
///
|
||||||
/// Generally, this is set in combination with [explicitChildNodes], since
|
/// Generally, this is set in combination with
|
||||||
/// nodes with this flag are not considered focusable by Android or iOS.
|
/// [SemanticsConfiguration.explicitChildNodes], since nodes with this flag
|
||||||
|
/// are not considered focusable by Android or iOS.
|
||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
@ -783,7 +784,7 @@ class SemanticsProperties extends DiagnosticableTree {
|
|||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
/// * [SemanticsFlag.image], for the flag this setting controls.
|
/// * [SemanticsFlag.isImage], for the flag this setting controls.
|
||||||
final bool image;
|
final bool image;
|
||||||
|
|
||||||
/// If non-null, whether the node should be considered a live region.
|
/// If non-null, whether the node should be considered a live region.
|
||||||
@ -796,14 +797,14 @@ class SemanticsProperties extends DiagnosticableTree {
|
|||||||
/// On iOS, no announcements are made but the node is marked as
|
/// On iOS, no announcements are made but the node is marked as
|
||||||
/// `UIAccessibilityTraitUpdatesFrequently`.
|
/// `UIAccessibilityTraitUpdatesFrequently`.
|
||||||
///
|
///
|
||||||
/// An example of a live region is the [Snackbar] widget. When it appears
|
/// An example of a live region is the [SnackBar] widget. When it appears
|
||||||
/// on the screen it may be difficult to focus to read the label. A live
|
/// on the screen it may be difficult to focus to read the label. A live
|
||||||
/// region causes an initial polite announcement to be generated
|
/// region causes an initial polite announcement to be generated
|
||||||
/// automatically.
|
/// automatically.
|
||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
/// * [SemanticsFlag.liveRegion], the semantics flag this setting controls.
|
/// * [SemanticsFlag.isLiveRegion], the semantics flag this setting controls.
|
||||||
/// * [SemanticsConfiguration.liveRegion], for a full description of a live region.
|
/// * [SemanticsConfiguration.liveRegion], for a full description of a live region.
|
||||||
final bool liveRegion;
|
final bool liveRegion;
|
||||||
|
|
||||||
@ -1034,7 +1035,7 @@ class SemanticsProperties extends DiagnosticableTree {
|
|||||||
/// menu of a text field, for example.
|
/// menu of a text field, for example.
|
||||||
final VoidCallback onPaste;
|
final VoidCallback onPaste;
|
||||||
|
|
||||||
/// The handler for [SemanticsAction.onMoveCursorForwardByCharacter].
|
/// The handler for [SemanticsAction.moveCursorForwardByCharacter].
|
||||||
///
|
///
|
||||||
/// This handler is invoked when the user wants to move the cursor in a
|
/// This handler is invoked when the user wants to move the cursor in a
|
||||||
/// text field forward by one character.
|
/// text field forward by one character.
|
||||||
@ -1043,7 +1044,7 @@ class SemanticsProperties extends DiagnosticableTree {
|
|||||||
/// input focus is in a text field.
|
/// input focus is in a text field.
|
||||||
final MoveCursorHandler onMoveCursorForwardByCharacter;
|
final MoveCursorHandler onMoveCursorForwardByCharacter;
|
||||||
|
|
||||||
/// The handler for [SemanticsAction.onMoveCursorBackwardByCharacter].
|
/// The handler for [SemanticsAction.moveCursorBackwardByCharacter].
|
||||||
///
|
///
|
||||||
/// This handler is invoked when the user wants to move the cursor in a
|
/// This handler is invoked when the user wants to move the cursor in a
|
||||||
/// text field backward by one character.
|
/// text field backward by one character.
|
||||||
@ -1052,7 +1053,7 @@ class SemanticsProperties extends DiagnosticableTree {
|
|||||||
/// input focus is in a text field.
|
/// input focus is in a text field.
|
||||||
final MoveCursorHandler onMoveCursorBackwardByCharacter;
|
final MoveCursorHandler onMoveCursorBackwardByCharacter;
|
||||||
|
|
||||||
/// The handler for [SemanticsAction.onMoveCursorForwardByWord].
|
/// The handler for [SemanticsAction.moveCursorForwardByWord].
|
||||||
///
|
///
|
||||||
/// This handler is invoked when the user wants to move the cursor in a
|
/// This handler is invoked when the user wants to move the cursor in a
|
||||||
/// text field backward by one word.
|
/// text field backward by one word.
|
||||||
@ -1061,7 +1062,7 @@ class SemanticsProperties extends DiagnosticableTree {
|
|||||||
/// input focus is in a text field.
|
/// input focus is in a text field.
|
||||||
final MoveCursorHandler onMoveCursorForwardByWord;
|
final MoveCursorHandler onMoveCursorForwardByWord;
|
||||||
|
|
||||||
/// The handler for [SemanticsAction.onMoveCursorBackwardByWord].
|
/// The handler for [SemanticsAction.moveCursorBackwardByWord].
|
||||||
///
|
///
|
||||||
/// This handler is invoked when the user wants to move the cursor in a
|
/// This handler is invoked when the user wants to move the cursor in a
|
||||||
/// text field backward by one word.
|
/// text field backward by one word.
|
||||||
@ -1129,7 +1130,7 @@ class SemanticsProperties extends DiagnosticableTree {
|
|||||||
/// A map from each supported [CustomSemanticsAction] to a provided handler.
|
/// A map from each supported [CustomSemanticsAction] to a provided handler.
|
||||||
///
|
///
|
||||||
/// The handler associated with each custom action is called whenever a
|
/// The handler associated with each custom action is called whenever a
|
||||||
/// semantics event of type [SemanticsEvent.customEvent] is received. The
|
/// semantics action of type [SemanticsAction.customAction] is received. The
|
||||||
/// provided argument will be an identifier used to retrieve an instance of
|
/// provided argument will be an identifier used to retrieve an instance of
|
||||||
/// a custom action which can then retrieve the correct handler from this map.
|
/// a custom action which can then retrieve the correct handler from this map.
|
||||||
///
|
///
|
||||||
@ -1284,7 +1285,7 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin {
|
|||||||
///
|
///
|
||||||
/// The [elevation] property is relative to the elevation of the parent
|
/// The [elevation] property is relative to the elevation of the parent
|
||||||
/// [SemanticsNode]. However, as [SemanticsConfiguration]s from various
|
/// [SemanticsNode]. However, as [SemanticsConfiguration]s from various
|
||||||
/// ascending [RenderObjects] are merged into each other to form that
|
/// ascending [RenderObject]s are merged into each other to form that
|
||||||
/// [SemanticsNode] the parent’s elevation may change. This requires an
|
/// [SemanticsNode] the parent’s elevation may change. This requires an
|
||||||
/// adjustment of the child’s relative elevation which is represented by this
|
/// adjustment of the child’s relative elevation which is represented by this
|
||||||
/// value.
|
/// value.
|
||||||
@ -2157,12 +2158,6 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin {
|
|||||||
///
|
///
|
||||||
/// Semantics events should be sent to inform interested parties (like
|
/// Semantics events should be sent to inform interested parties (like
|
||||||
/// the accessibility system of the operating system) about changes to the UI.
|
/// the accessibility system of the operating system) about changes to the UI.
|
||||||
///
|
|
||||||
/// For example, if this semantics node represents a scrollable list, a
|
|
||||||
/// [ScrollCompletedSemanticsEvent] should be sent after a scroll action is completed.
|
|
||||||
/// That way, the operating system can give additional feedback to the user
|
|
||||||
/// about the state of the UI (e.g. on Android a ping sound is played to
|
|
||||||
/// indicate a successful scroll in accessibility mode).
|
|
||||||
void sendEvent(SemanticsEvent event) {
|
void sendEvent(SemanticsEvent event) {
|
||||||
if (!attached)
|
if (!attached)
|
||||||
return;
|
return;
|
||||||
@ -2765,7 +2760,7 @@ class SemanticsConfiguration {
|
|||||||
/// information to the [SemanticsNode] introduced by this configuration
|
/// information to the [SemanticsNode] introduced by this configuration
|
||||||
/// is controlled by [explicitChildNodes].
|
/// is controlled by [explicitChildNodes].
|
||||||
///
|
///
|
||||||
/// This has to be true if [isMergingDescendantsIntoOneNode] is also true.
|
/// This has to be true if [isMergingSemanticsOfDescendants] is also true.
|
||||||
bool get isSemanticBoundary => _isSemanticBoundary;
|
bool get isSemanticBoundary => _isSemanticBoundary;
|
||||||
bool _isSemanticBoundary = false;
|
bool _isSemanticBoundary = false;
|
||||||
set isSemanticBoundary(bool value) {
|
set isSemanticBoundary(bool value) {
|
||||||
@ -3070,7 +3065,7 @@ class SemanticsConfiguration {
|
|||||||
_onShowOnScreen = value;
|
_onShowOnScreen = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The handler for [SemanticsAction.onMoveCursorForwardByCharacter].
|
/// The handler for [SemanticsAction.moveCursorForwardByCharacter].
|
||||||
///
|
///
|
||||||
/// This handler is invoked when the user wants to move the cursor in a
|
/// This handler is invoked when the user wants to move the cursor in a
|
||||||
/// text field forward by one character.
|
/// text field forward by one character.
|
||||||
@ -3089,7 +3084,7 @@ class SemanticsConfiguration {
|
|||||||
_onMoveCursorForwardByCharacter = value;
|
_onMoveCursorForwardByCharacter = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The handler for [SemanticsAction.onMoveCursorBackwardByCharacter].
|
/// The handler for [SemanticsAction.moveCursorBackwardByCharacter].
|
||||||
///
|
///
|
||||||
/// This handler is invoked when the user wants to move the cursor in a
|
/// This handler is invoked when the user wants to move the cursor in a
|
||||||
/// text field backward by one character.
|
/// text field backward by one character.
|
||||||
@ -3108,7 +3103,7 @@ class SemanticsConfiguration {
|
|||||||
_onMoveCursorBackwardByCharacter = value;
|
_onMoveCursorBackwardByCharacter = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The handler for [SemanticsAction.onMoveCursorForwardByWord].
|
/// The handler for [SemanticsAction.moveCursorForwardByWord].
|
||||||
///
|
///
|
||||||
/// This handler is invoked when the user wants to move the cursor in a
|
/// This handler is invoked when the user wants to move the cursor in a
|
||||||
/// text field backward by one word.
|
/// text field backward by one word.
|
||||||
@ -3127,7 +3122,7 @@ class SemanticsConfiguration {
|
|||||||
_onMoveCursorForwardByCharacter = value;
|
_onMoveCursorForwardByCharacter = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The handler for [SemanticsAction.onMoveCursorBackwardByWord].
|
/// The handler for [SemanticsAction.moveCursorBackwardByWord].
|
||||||
///
|
///
|
||||||
/// This handler is invoked when the user wants to move the cursor in a
|
/// This handler is invoked when the user wants to move the cursor in a
|
||||||
/// text field backward by one word.
|
/// text field backward by one word.
|
||||||
@ -3219,10 +3214,6 @@ class SemanticsConfiguration {
|
|||||||
|
|
||||||
/// Returns the action handler registered for [action] or null if none was
|
/// Returns the action handler registered for [action] or null if none was
|
||||||
/// registered.
|
/// registered.
|
||||||
///
|
|
||||||
/// See also:
|
|
||||||
///
|
|
||||||
/// * [addAction] to add an action.
|
|
||||||
_SemanticsActionHandler getActionHandler(SemanticsAction action) => _actions[action];
|
_SemanticsActionHandler getActionHandler(SemanticsAction action) => _actions[action];
|
||||||
|
|
||||||
/// Determines the position of this node among its siblings in the traversal
|
/// Determines the position of this node among its siblings in the traversal
|
||||||
@ -3345,7 +3336,7 @@ class SemanticsConfiguration {
|
|||||||
/// The handlers for each supported [CustomSemanticsAction].
|
/// The handlers for each supported [CustomSemanticsAction].
|
||||||
///
|
///
|
||||||
/// Whenever a custom accessibility action is added to a node, the action
|
/// Whenever a custom accessibility action is added to a node, the action
|
||||||
/// [SemanticAction.customAction] is automatically added. A handler is
|
/// [SemanticsAction.customAction] is automatically added. A handler is
|
||||||
/// created which uses the passed argument to lookup the custom action
|
/// created which uses the passed argument to lookup the custom action
|
||||||
/// handler from this map and invoke it, if present.
|
/// handler from this map and invoke it, if present.
|
||||||
Map<CustomSemanticsAction, VoidCallback> get customSemanticsActions => _customSemanticsActions;
|
Map<CustomSemanticsAction, VoidCallback> get customSemanticsActions => _customSemanticsActions;
|
||||||
@ -3526,7 +3517,7 @@ class SemanticsConfiguration {
|
|||||||
/// announcement occurs even if the node is not focused, but only if the label
|
/// announcement occurs even if the node is not focused, but only if the label
|
||||||
/// has changed since the last update.
|
/// has changed since the last update.
|
||||||
///
|
///
|
||||||
/// An example of a live region is the [Snackbar] widget. When it appears
|
/// An example of a live region is the [SnackBar] widget. When it appears
|
||||||
/// on the screen it may be difficult to focus to read the label. A live
|
/// on the screen it may be difficult to focus to read the label. A live
|
||||||
/// region causes an initial polite announcement to be generated
|
/// region causes an initial polite announcement to be generated
|
||||||
/// automatically.
|
/// automatically.
|
||||||
@ -3686,7 +3677,7 @@ class SemanticsConfiguration {
|
|||||||
|
|
||||||
/// Whether the [value] should be obscured.
|
/// Whether the [value] should be obscured.
|
||||||
///
|
///
|
||||||
/// This option is usually set in combination with [textField] to indicate
|
/// This option is usually set in combination with [isTextField] to indicate
|
||||||
/// that the text field contains a password (or other sensitive information).
|
/// that the text field contains a password (or other sensitive information).
|
||||||
/// Doing so instructs screen readers to not read out the [value].
|
/// Doing so instructs screen readers to not read out the [value].
|
||||||
bool get isObscured => _hasFlag(SemanticsFlag.isObscured);
|
bool get isObscured => _hasFlag(SemanticsFlag.isObscured);
|
||||||
@ -3696,7 +3687,7 @@ class SemanticsConfiguration {
|
|||||||
|
|
||||||
/// Whether the text field is multiline.
|
/// Whether the text field is multiline.
|
||||||
///
|
///
|
||||||
/// This option is usually set in combination with [textField] to indicate
|
/// This option is usually set in combination with [isTextField] to indicate
|
||||||
/// that the text field is configured to be multiline.
|
/// that the text field is configured to be multiline.
|
||||||
bool get isMultiline => _hasFlag(SemanticsFlag.isMultiline);
|
bool get isMultiline => _hasFlag(SemanticsFlag.isMultiline);
|
||||||
set isMultiline(bool value) {
|
set isMultiline(bool value) {
|
||||||
@ -3800,7 +3791,7 @@ class SemanticsConfiguration {
|
|||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
/// * [RenderSemanticsGestureHandler.excludeFromScrolling] for an example of
|
/// * [RenderViewport.excludeFromScrolling] for an example of
|
||||||
/// how tags are used.
|
/// how tags are used.
|
||||||
void addTagForChildren(SemanticsTag tag) {
|
void addTagForChildren(SemanticsTag tag) {
|
||||||
_tagsForChildren ??= <SemanticsTag>{};
|
_tagsForChildren ??= <SemanticsTag>{};
|
||||||
|
@ -149,7 +149,7 @@ class TapSemanticEvent extends SemanticsEvent {
|
|||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
/// * [SemanticsFlag.liveRegion], for a description of live regions.
|
/// * [SemanticsFlag.isLiveRegion], for a description of live regions.
|
||||||
///
|
///
|
||||||
@Deprecated(
|
@Deprecated(
|
||||||
'This event has never been implemented and will be removed in a future version of Flutter. References to it should be removed. '
|
'This event has never been implemented and will be removed in a future version of Flutter. References to it should be removed. '
|
||||||
|
@ -722,8 +722,8 @@ abstract class AutofillClient {
|
|||||||
/// [TextInputConfiguration.autofillConfiguration] must not be null.
|
/// [TextInputConfiguration.autofillConfiguration] must not be null.
|
||||||
TextInputConfiguration get textInputConfiguration;
|
TextInputConfiguration get textInputConfiguration;
|
||||||
|
|
||||||
/// Requests this [AutofillClient] update its [TextEditingState] to the given
|
/// Requests this [AutofillClient] update its [TextEditingValue] to the given
|
||||||
/// state.
|
/// value.
|
||||||
void updateEditingValue(TextEditingValue newEditingValue);
|
void updateEditingValue(TextEditingValue newEditingValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,13 +167,14 @@ mixin ServicesBinding on BindingBase, SchedulerBinding {
|
|||||||
|
|
||||||
// App life cycle
|
// App life cycle
|
||||||
|
|
||||||
/// Initializes the [lifecycleState] with the [initialLifecycleState] from the
|
/// Initializes the [lifecycleState] with the [Window.initialLifecycleState]
|
||||||
/// window.
|
/// from the window.
|
||||||
///
|
///
|
||||||
/// Once the [lifecycleState] is populated through any means (including this
|
/// Once the [lifecycleState] is populated through any means (including this
|
||||||
/// method), this method will do nothing. This is because the
|
/// method), this method will do nothing. This is because the
|
||||||
/// [initialLifecycleState] may already be stale and it no longer makes sense
|
/// [Window.initialLifecycleState] may already be stale and it no longer makes
|
||||||
/// to use the initial state at dart vm startup as the current state anymore.
|
/// sense to use the initial state at dart vm startup as the current state
|
||||||
|
/// anymore.
|
||||||
///
|
///
|
||||||
/// The latest state should be obtained by subscribing to
|
/// The latest state should be obtained by subscribing to
|
||||||
/// [WidgetsBindingObserver.didChangeAppLifecycleState].
|
/// [WidgetsBindingObserver.didChangeAppLifecycleState].
|
||||||
|
@ -14,6 +14,12 @@ import 'package:flutter/gestures.dart';
|
|||||||
import 'message_codec.dart';
|
import 'message_codec.dart';
|
||||||
import 'system_channels.dart';
|
import 'system_channels.dart';
|
||||||
|
|
||||||
|
/// Converts a given point from the global coordinate system in logical pixels
|
||||||
|
/// to the local coordinate system for a box.
|
||||||
|
///
|
||||||
|
/// Used by [AndroidViewController.pointTransformer].
|
||||||
|
typedef PointTransformer = Offset Function(Offset position);
|
||||||
|
|
||||||
/// The [PlatformViewsRegistry] responsible for generating unique identifiers for platform views.
|
/// The [PlatformViewsRegistry] responsible for generating unique identifiers for platform views.
|
||||||
final PlatformViewsRegistry platformViewsRegistry = PlatformViewsRegistry._instance();
|
final PlatformViewsRegistry platformViewsRegistry = PlatformViewsRegistry._instance();
|
||||||
|
|
||||||
@ -33,7 +39,7 @@ class PlatformViewsRegistry {
|
|||||||
/// A platform view identifier can refer to a platform view that was never created,
|
/// A platform view identifier can refer to a platform view that was never created,
|
||||||
/// a platform view that was disposed, or a platform view that is alive.
|
/// a platform view that was disposed, or a platform view that is alive.
|
||||||
///
|
///
|
||||||
/// Typically a platform view identifier is passed to a [PlatformView] widget
|
/// Typically a platform view identifier is passed to a platform view widget
|
||||||
/// which creates the platform view and manages its lifecycle.
|
/// which creates the platform view and manages its lifecycle.
|
||||||
int getNextPlatformViewId() => _nextPlatformViewId++;
|
int getNextPlatformViewId() => _nextPlatformViewId++;
|
||||||
}
|
}
|
||||||
@ -497,9 +503,9 @@ class _AndroidMotionEventConverter {
|
|||||||
<int, AndroidPointerProperties>{};
|
<int, AndroidPointerProperties>{};
|
||||||
final Set<int> usedAndroidPointerIds = <int>{};
|
final Set<int> usedAndroidPointerIds = <int>{};
|
||||||
|
|
||||||
Offset Function(Offset position) _pointTransformer;
|
PointTransformer _pointTransformer;
|
||||||
|
|
||||||
set pointTransformer(Offset Function(Offset position) transformer) {
|
set pointTransformer(PointTransformer transformer) {
|
||||||
assert(transformer != null);
|
assert(transformer != null);
|
||||||
_pointTransformer = transformer;
|
_pointTransformer = transformer;
|
||||||
}
|
}
|
||||||
@ -797,7 +803,7 @@ abstract class AndroidViewController extends PlatformViewController {
|
|||||||
///
|
///
|
||||||
/// This is required to convert a [PointerEvent] to an [AndroidMotionEvent].
|
/// This is required to convert a [PointerEvent] to an [AndroidMotionEvent].
|
||||||
/// It is typically provided by using [RenderBox.globalToLocal].
|
/// It is typically provided by using [RenderBox.globalToLocal].
|
||||||
set pointTransformer(Offset Function(Offset position) transformer) {
|
set pointTransformer(PointTransformer transformer) {
|
||||||
assert(transformer != null);
|
assert(transformer != null);
|
||||||
_motionEventConverter._pointTransformer = transformer;
|
_motionEventConverter._pointTransformer = transformer;
|
||||||
}
|
}
|
||||||
@ -1135,7 +1141,7 @@ abstract class PlatformViewController {
|
|||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
/// * [PlatformViewRegistry], which is a helper for managing platform view ids.
|
/// * [PlatformViewsRegistry], which is a helper for managing platform view ids.
|
||||||
int get viewId;
|
int get viewId;
|
||||||
|
|
||||||
/// Dispatches the `event` to the platform view.
|
/// Dispatches the `event` to the platform view.
|
||||||
|
@ -13,7 +13,7 @@ import 'raw_keyboard.dart';
|
|||||||
/// Platform-specific key event data for Linux.
|
/// Platform-specific key event data for Linux.
|
||||||
///
|
///
|
||||||
/// Different window toolkit implementations can map to different key codes. This class
|
/// Different window toolkit implementations can map to different key codes. This class
|
||||||
/// will use the correct mapping depending on the [toolkit] provided.
|
/// will use the correct mapping depending on the [keyHelper] provided.
|
||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
@ -21,7 +21,7 @@ import 'raw_keyboard.dart';
|
|||||||
class RawKeyEventDataLinux extends RawKeyEventData {
|
class RawKeyEventDataLinux extends RawKeyEventData {
|
||||||
/// Creates a key event data structure specific for Linux.
|
/// Creates a key event data structure specific for Linux.
|
||||||
///
|
///
|
||||||
/// The [toolkit], [scanCode], [unicodeScalarValues], [keyCode], and [modifiers],
|
/// The [keyHelper], [scanCode], [unicodeScalarValues], [keyCode], and [modifiers],
|
||||||
/// arguments must not be null.
|
/// arguments must not be null.
|
||||||
const RawKeyEventDataLinux({
|
const RawKeyEventDataLinux({
|
||||||
@required this.keyHelper,
|
@required this.keyHelper,
|
||||||
@ -169,44 +169,45 @@ abstract class KeyHelper {
|
|||||||
|
|
||||||
/// Helper class that uses GLFW-specific key mappings.
|
/// Helper class that uses GLFW-specific key mappings.
|
||||||
class GLFWKeyHelper with KeyHelper {
|
class GLFWKeyHelper with KeyHelper {
|
||||||
/// This mask is used to check the [modifiers] field to test whether the CAPS
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// LOCK modifier key is on.
|
/// test whether the CAPS LOCK modifier key is on.
|
||||||
///
|
///
|
||||||
/// {@template flutter.services.glfwKeyHelper.modifiers}
|
/// {@template flutter.services.glfwKeyHelper.modifiers}
|
||||||
/// Use this value if you need to decode the [modifiers] field yourself, but
|
/// Use this value if you need to decode the [RawKeyEventDataLinux.modifiers]
|
||||||
/// it's much easier to use [isModifierPressed] if you just want to know if a
|
/// field yourself, but it's much easier to use [isModifierPressed] if you
|
||||||
/// modifier is pressed. This is especially true on GLFW, since its modifiers
|
/// just want to know if a modifier is pressed. This is especially true on
|
||||||
/// don't include the effects of the current key event.
|
/// GLFW, since its modifiers don't include the effects of the current key
|
||||||
|
/// event.
|
||||||
/// {@endtemplate}
|
/// {@endtemplate}
|
||||||
static const int modifierCapsLock = 0x0010;
|
static const int modifierCapsLock = 0x0010;
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether one of the
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// SHIFT modifier keys is pressed.
|
/// test whether one of the SHIFT modifier keys is pressed.
|
||||||
///
|
///
|
||||||
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
||||||
static const int modifierShift = 0x0001;
|
static const int modifierShift = 0x0001;
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether one of the
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// CTRL modifier keys is pressed.
|
/// test whether one of the CTRL modifier keys is pressed.
|
||||||
///
|
///
|
||||||
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
||||||
static const int modifierControl = 0x0002;
|
static const int modifierControl = 0x0002;
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether one of the
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// ALT modifier keys is pressed.
|
/// test whether one of the ALT modifier keys is pressed.
|
||||||
///
|
///
|
||||||
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
||||||
static const int modifierAlt = 0x0004;
|
static const int modifierAlt = 0x0004;
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether one of the
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// Meta(SUPER) modifier keys is pressed.
|
/// test whether one of the Meta(SUPER) modifier keys is pressed.
|
||||||
///
|
///
|
||||||
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
||||||
static const int modifierMeta = 0x0008;
|
static const int modifierMeta = 0x0008;
|
||||||
|
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether any key in
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// the numeric keypad is pressed.
|
/// test whether any key in the numeric keypad is pressed.
|
||||||
///
|
///
|
||||||
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
/// {@macro flutter.services.glfwKeyHelper.modifiers}
|
||||||
static const int modifierNumericPad = 0x0020;
|
static const int modifierNumericPad = 0x0020;
|
||||||
@ -319,39 +320,45 @@ class GLFWKeyHelper with KeyHelper {
|
|||||||
|
|
||||||
/// Helper class that uses GTK-specific key mappings.
|
/// Helper class that uses GTK-specific key mappings.
|
||||||
class GtkKeyHelper with KeyHelper {
|
class GtkKeyHelper with KeyHelper {
|
||||||
/// This mask is used to check the [modifiers] field to test whether one of the
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// SHIFT modifier keys is pressed.
|
/// test whether one of the SHIFT modifier keys is pressed.
|
||||||
///
|
///
|
||||||
/// {@template flutter.services.gtkKeyHelper.modifiers}
|
/// {@template flutter.services.gtkKeyHelper.modifiers}
|
||||||
/// Use this value if you need to decode the [modifiers] field yourself, but
|
/// Use this value if you need to decode the [RawKeyEventDataLinux.modifiers] field yourself, but
|
||||||
/// it's much easier to use [isModifierPressed] if you just want to know if a
|
/// it's much easier to use [isModifierPressed] if you just want to know if a
|
||||||
/// modifier is pressed. This is especially true on GTK, since its modifiers
|
/// modifier is pressed. This is especially true on GTK, since its modifiers
|
||||||
/// don't include the effects of the current key event.
|
/// don't include the effects of the current key event.
|
||||||
/// {@endtemplate}
|
/// {@endtemplate}
|
||||||
static const int modifierShift = 1 << 0;
|
static const int modifierShift = 1 << 0;
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether the CAPS
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// LOCK modifier key is on.
|
/// test whether the CAPS LOCK modifier key is on.
|
||||||
|
///
|
||||||
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
||||||
static const int modifierCapsLock = 1 << 1;
|
static const int modifierCapsLock = 1 << 1;
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether one of the
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// CTRL modifier keys is pressed.
|
/// test whether one of the CTRL modifier keys is pressed.
|
||||||
|
///
|
||||||
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
||||||
static const int modifierControl = 1 << 2;
|
static const int modifierControl = 1 << 2;
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether the first
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// modifier key is pressed (usually mapped to alt).
|
/// test whether the first modifier key is pressed (usually mapped to alt).
|
||||||
|
///
|
||||||
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
||||||
static const int modifierMod1 = 1 << 3;
|
static const int modifierMod1 = 1 << 3;
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether the second
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// modifier key is pressed (assumed to be mapped to num lock).
|
/// test whether the second modifier key is pressed (assumed to be mapped to
|
||||||
|
/// num lock).
|
||||||
|
///
|
||||||
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
||||||
static const int modifierMod2 = 1 << 4;
|
static const int modifierMod2 = 1 << 4;
|
||||||
|
|
||||||
/// This mask is used to check the [modifiers] field to test whether one of the
|
/// This mask is used to check the [RawKeyEventDataLinux.modifiers] field to
|
||||||
/// Meta(SUPER) modifier keys is pressed.
|
/// test whether one of the Meta(SUPER) modifier keys is pressed.
|
||||||
|
///
|
||||||
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
/// {@macro flutter.services.gtkKeyHelper.modifiers}
|
||||||
static const int modifierMeta = 1 << 28;
|
static const int modifierMeta = 1 << 28;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ import 'raw_keyboard.dart';
|
|||||||
class RawKeyEventDataWeb extends RawKeyEventData {
|
class RawKeyEventDataWeb extends RawKeyEventData {
|
||||||
/// Creates a key event data structure specific for Web.
|
/// Creates a key event data structure specific for Web.
|
||||||
///
|
///
|
||||||
/// The [keyCode] and [metaState] arguments must not be null.
|
/// The [code] and [metaState] arguments must not be null.
|
||||||
const RawKeyEventDataWeb({
|
const RawKeyEventDataWeb({
|
||||||
@required this.code,
|
@required this.code,
|
||||||
@required this.key,
|
@required this.key,
|
||||||
|
@ -131,7 +131,7 @@ class SystemChannels {
|
|||||||
/// a [List] whose first value is an integer representing a previously
|
/// a [List] whose first value is an integer representing a previously
|
||||||
/// unused transaction identifier, and the second is a [String] with a
|
/// unused transaction identifier, and the second is a [String] with a
|
||||||
/// JSON-encoded object with five keys, as obtained from
|
/// JSON-encoded object with five keys, as obtained from
|
||||||
/// [TextInputConfiguration.toJSON]. This method must be invoked before any
|
/// [TextInputConfiguration.toJson]. This method must be invoked before any
|
||||||
/// others (except `TextInput.hide`). See [TextInput.attach].
|
/// others (except `TextInput.hide`). See [TextInput.attach].
|
||||||
///
|
///
|
||||||
/// * `TextInput.show`: Show the keyboard. See [TextInputConnection.show].
|
/// * `TextInput.show`: Show the keyboard. See [TextInputConnection.show].
|
||||||
@ -154,8 +154,8 @@ class SystemChannels {
|
|||||||
///
|
///
|
||||||
/// * `TextInputClient.updateEditingState`: The user has changed the contents
|
/// * `TextInputClient.updateEditingState`: The user has changed the contents
|
||||||
/// of the text control. The second argument is a [String] containing a
|
/// of the text control. The second argument is a [String] containing a
|
||||||
/// JSON-encoded object with seven keys, in the form expected by [new
|
/// JSON-encoded object with seven keys, in the form expected by
|
||||||
/// TextEditingValue.fromJSON].
|
/// [TextEditingValue.fromJSON].
|
||||||
///
|
///
|
||||||
/// * `TextInputClient.performAction`: The user has triggered an action. The
|
/// * `TextInputClient.performAction`: The user has triggered an action. The
|
||||||
/// second argument is a [String] consisting of the stringification of one
|
/// second argument is a [String] consisting of the stringification of one
|
||||||
|
@ -336,7 +336,7 @@ class SystemChrome {
|
|||||||
/// {@end-tool}
|
/// {@end-tool}
|
||||||
///
|
///
|
||||||
/// For more complex control of the system overlay styles, consider using
|
/// For more complex control of the system overlay styles, consider using
|
||||||
/// an [AnnotatedRegion] widget instead of calling [setSystemUiOverlayStyle]
|
/// an [AnnotatedRegion] widget instead of calling [setSystemUIOverlayStyle]
|
||||||
/// directly. This widget places a value directly into the layer tree where
|
/// directly. This widget places a value directly into the layer tree where
|
||||||
/// it can be hit-tested by the framework. On every frame, the framework will
|
/// it can be hit-tested by the framework. On every frame, the framework will
|
||||||
/// hit-test and select the annotated region it finds under the status and
|
/// hit-test and select the annotated region it finds under the status and
|
||||||
|
@ -92,11 +92,12 @@ class FilteringTextInputFormatter extends TextInputFormatter {
|
|||||||
///
|
///
|
||||||
/// If [allow] is true, then the filter pattern is an allow list,
|
/// If [allow] is true, then the filter pattern is an allow list,
|
||||||
/// and characters must match the pattern to be accepted. See also
|
/// and characters must match the pattern to be accepted. See also
|
||||||
/// [new FilteringTextInputFormatter.allow].
|
/// the `FilteringTextInputFormatter.allow` constructor.
|
||||||
|
// TODO(goderbauer): Cannot link to the constructor because of https://github.com/dart-lang/dartdoc/issues/2276.
|
||||||
///
|
///
|
||||||
/// If [allow] is false, then the filter pattern is a deny list,
|
/// If [allow] is false, then the filter pattern is a deny list,
|
||||||
/// and characters that match the pattern are rejected. See also
|
/// and characters that match the pattern are rejected. See also
|
||||||
/// [new FilteringTextInputFormatter.deny].
|
/// the [FilteringTextInputFormatter.deny] constructor.
|
||||||
///
|
///
|
||||||
/// The [filterPattern], [allow], and [replacementString] arguments
|
/// The [filterPattern], [allow], and [replacementString] arguments
|
||||||
/// must not be null.
|
/// must not be null.
|
||||||
|
@ -32,7 +32,6 @@ export 'dart:ui' show TextAffinity;
|
|||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
/// * [TextField.smartDashesType]
|
/// * [TextField.smartDashesType]
|
||||||
/// * [TextFormField.smartDashesType]
|
|
||||||
/// * [CupertinoTextField.smartDashesType]
|
/// * [CupertinoTextField.smartDashesType]
|
||||||
/// * [EditableText.smartDashesType]
|
/// * [EditableText.smartDashesType]
|
||||||
/// * [SmartQuotesType]
|
/// * [SmartQuotesType]
|
||||||
@ -56,10 +55,8 @@ enum SmartDashesType {
|
|||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
/// * [TextField.smartQuotesType]
|
/// * [TextField.smartQuotesType]
|
||||||
/// * [TextFormField.smartQuotesType]
|
|
||||||
/// * [CupertinoTextField.smartQuotesType]
|
/// * [CupertinoTextField.smartQuotesType]
|
||||||
/// * [EditableText.smartQuotesType]
|
/// * [EditableText.smartQuotesType]
|
||||||
/// * [SmartDashesType]
|
|
||||||
/// * <https://developer.apple.com/documentation/uikit/uitextinputtraits>
|
/// * <https://developer.apple.com/documentation/uikit/uitextinputtraits>
|
||||||
enum SmartQuotesType {
|
enum SmartQuotesType {
|
||||||
/// Smart quotes is disabled.
|
/// Smart quotes is disabled.
|
||||||
@ -79,7 +76,7 @@ enum SmartQuotesType {
|
|||||||
///
|
///
|
||||||
/// On Android, behavior may vary across device and keyboard provider.
|
/// On Android, behavior may vary across device and keyboard provider.
|
||||||
///
|
///
|
||||||
/// This class stays as close to [Enum] interface as possible, and allows
|
/// This class stays as close to `Enum` interface as possible, and allows
|
||||||
/// for additional flags for some input types. For example, numeric input
|
/// for additional flags for some input types. For example, numeric input
|
||||||
/// can specify whether it supports decimal numbers and/or signed numbers.
|
/// can specify whether it supports decimal numbers and/or signed numbers.
|
||||||
@immutable
|
@immutable
|
||||||
|
@ -2171,7 +2171,7 @@ abstract class BuildContext {
|
|||||||
)
|
)
|
||||||
InheritedWidget inheritFromWidgetOfExactType(Type targetType, { Object aspect });
|
InheritedWidget inheritFromWidgetOfExactType(Type targetType, { Object aspect });
|
||||||
|
|
||||||
/// Obtains the nearest widget of the given type [T], which must be the type of a
|
/// Obtains the nearest widget of the given type `T`, which must be the type of a
|
||||||
/// concrete [InheritedWidget] subclass, and registers this build context with
|
/// concrete [InheritedWidget] subclass, and registers this build context with
|
||||||
/// that widget such that when that widget changes (or a new widget of that
|
/// that widget such that when that widget changes (or a new widget of that
|
||||||
/// type is introduced, or the widget goes away), this build context is
|
/// type is introduced, or the widget goes away), this build context is
|
||||||
@ -2206,7 +2206,7 @@ abstract class BuildContext {
|
|||||||
/// the widget or one of its ancestors is moved (for example, because an
|
/// the widget or one of its ancestors is moved (for example, because an
|
||||||
/// ancestor is added or removed).
|
/// ancestor is added or removed).
|
||||||
///
|
///
|
||||||
/// The [aspect] parameter is only used when [T] is an
|
/// The [aspect] parameter is only used when `T` is an
|
||||||
/// [InheritedWidget] subclasses that supports partial updates, like
|
/// [InheritedWidget] subclasses that supports partial updates, like
|
||||||
/// [InheritedModel]. It specifies what "aspect" of the inherited
|
/// [InheritedModel]. It specifies what "aspect" of the inherited
|
||||||
/// widget this context depends on.
|
/// widget this context depends on.
|
||||||
@ -2223,7 +2223,7 @@ abstract class BuildContext {
|
|||||||
)
|
)
|
||||||
InheritedElement ancestorInheritedElementForWidgetOfExactType(Type targetType);
|
InheritedElement ancestorInheritedElementForWidgetOfExactType(Type targetType);
|
||||||
|
|
||||||
/// Obtains the element corresponding to the nearest widget of the given type [T],
|
/// Obtains the element corresponding to the nearest widget of the given type `T`,
|
||||||
/// which must be the type of a concrete [InheritedWidget] subclass.
|
/// which must be the type of a concrete [InheritedWidget] subclass.
|
||||||
///
|
///
|
||||||
/// Returns null if no such element is found.
|
/// Returns null if no such element is found.
|
||||||
@ -2252,7 +2252,7 @@ abstract class BuildContext {
|
|||||||
)
|
)
|
||||||
Widget ancestorWidgetOfExactType(Type targetType);
|
Widget ancestorWidgetOfExactType(Type targetType);
|
||||||
|
|
||||||
/// Returns the nearest ancestor widget of the given type [T], which must be the
|
/// Returns the nearest ancestor widget of the given type `T`, which must be the
|
||||||
/// type of a concrete [Widget] subclass.
|
/// type of a concrete [Widget] subclass.
|
||||||
///
|
///
|
||||||
/// In general, [dependOnInheritedWidgetOfExactType] is more useful, since
|
/// In general, [dependOnInheritedWidgetOfExactType] is more useful, since
|
||||||
@ -2290,7 +2290,7 @@ abstract class BuildContext {
|
|||||||
State ancestorStateOfType(TypeMatcher matcher);
|
State ancestorStateOfType(TypeMatcher matcher);
|
||||||
|
|
||||||
/// Returns the [State] object of the nearest ancestor [StatefulWidget] widget
|
/// Returns the [State] object of the nearest ancestor [StatefulWidget] widget
|
||||||
/// that is an instance of the given type [T].
|
/// that is an instance of the given type `T`.
|
||||||
///
|
///
|
||||||
/// This should not be used from build methods, because the build context will
|
/// This should not be used from build methods, because the build context will
|
||||||
/// not be rebuilt if the value that would be returned by this method changes.
|
/// not be rebuilt if the value that would be returned by this method changes.
|
||||||
@ -2334,10 +2334,10 @@ abstract class BuildContext {
|
|||||||
State rootAncestorStateOfType(TypeMatcher matcher);
|
State rootAncestorStateOfType(TypeMatcher matcher);
|
||||||
|
|
||||||
/// Returns the [State] object of the furthest ancestor [StatefulWidget] widget
|
/// Returns the [State] object of the furthest ancestor [StatefulWidget] widget
|
||||||
/// that is an instance of the given type [T].
|
/// that is an instance of the given type `T`.
|
||||||
///
|
///
|
||||||
/// Functions the same way as [findAncestorStateOfType] but keeps visiting subsequent
|
/// Functions the same way as [findAncestorStateOfType] but keeps visiting subsequent
|
||||||
/// ancestors until there are none of the type instance of [T] remaining.
|
/// ancestors until there are none of the type instance of `T` remaining.
|
||||||
/// Then returns the last one found.
|
/// Then returns the last one found.
|
||||||
///
|
///
|
||||||
/// This operation is O(N) as well though N is the entire widget tree rather than
|
/// This operation is O(N) as well though N is the entire widget tree rather than
|
||||||
@ -2356,7 +2356,7 @@ abstract class BuildContext {
|
|||||||
RenderObject ancestorRenderObjectOfType(TypeMatcher matcher);
|
RenderObject ancestorRenderObjectOfType(TypeMatcher matcher);
|
||||||
|
|
||||||
/// Returns the [RenderObject] object of the nearest ancestor [RenderObjectWidget] widget
|
/// Returns the [RenderObject] object of the nearest ancestor [RenderObjectWidget] widget
|
||||||
/// that is an instance of the given type [T].
|
/// that is an instance of the given type `T`.
|
||||||
///
|
///
|
||||||
/// This should not be used from build methods, because the build context will
|
/// This should not be used from build methods, because the build context will
|
||||||
/// not be rebuilt if the value that would be returned by this method changes.
|
/// not be rebuilt if the value that would be returned by this method changes.
|
||||||
|
@ -174,7 +174,7 @@ class BySemanticsLabel extends SerializableFinder {
|
|||||||
/// Creates a semantic label finder given the [label].
|
/// Creates a semantic label finder given the [label].
|
||||||
const BySemanticsLabel(this.label);
|
const BySemanticsLabel(this.label);
|
||||||
|
|
||||||
/// A [Pattern] matching the [Semantics.properties.label].
|
/// A [Pattern] matching the label of a [SemanticsNode].
|
||||||
///
|
///
|
||||||
/// If this is a [String], it will be treated as an exact match.
|
/// If this is a [String], it will be treated as an exact match.
|
||||||
final Pattern label;
|
final Pattern label;
|
||||||
|
@ -52,7 +52,7 @@ class GetOffset extends CommandWithTarget {
|
|||||||
String get kind => 'get_offset';
|
String get kind => 'get_offset';
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The result of the [GetRect] command.
|
/// The result of the [GetOffset] command.
|
||||||
///
|
///
|
||||||
/// The offset is provided in logical pixels, which can be translated
|
/// The offset is provided in logical pixels, which can be translated
|
||||||
/// to device pixels via [Window.devicePixelRatio].
|
/// to device pixels via [Window.devicePixelRatio].
|
||||||
|
@ -146,11 +146,11 @@ class TimelineSummary {
|
|||||||
/// * "frame_rasterizer_begin_times": The rasterize begin time of each frame.
|
/// * "frame_rasterizer_begin_times": The rasterize begin time of each frame.
|
||||||
/// * "average_vsync_transitions_missed": Computes the average of the
|
/// * "average_vsync_transitions_missed": Computes the average of the
|
||||||
/// `vsync_transitions_missed` over the lag events.
|
/// `vsync_transitions_missed` over the lag events.
|
||||||
/// See [sceneDisplayLagSummarizer.computeAverageVsyncTransitionsMissed].
|
/// See [SceneDisplayLagSummarizer.computeAverageVsyncTransitionsMissed].
|
||||||
/// * "90th_percentile_vsync_transitions_missed" and
|
/// * "90th_percentile_vsync_transitions_missed" and
|
||||||
/// "99th_percentile_vsync_transitions_missed": The 90/99-th percentile
|
/// "99th_percentile_vsync_transitions_missed": The 90/99-th percentile
|
||||||
/// `vsync_transitions_missed` over the lag events.
|
/// `vsync_transitions_missed` over the lag events.
|
||||||
/// See [sceneDisplayLagSummarizer.computePercentileVsyncTransitionsMissed].
|
/// See [SceneDisplayLagSummarizer.computePercentileVsyncTransitionsMissed].
|
||||||
Map<String, dynamic> get summaryJson {
|
Map<String, dynamic> get summaryJson {
|
||||||
final SceneDisplayLagSummarizer sceneDisplayLagSummarizer = _sceneDisplayLagSummarizer();
|
final SceneDisplayLagSummarizer sceneDisplayLagSummarizer = _sceneDisplayLagSummarizer();
|
||||||
final Map<String, dynamic> profilingSummary = _profilingSummarizer().summarize();
|
final Map<String, dynamic> profilingSummary = _profilingSummarizer().summarize();
|
||||||
|
@ -361,8 +361,7 @@ abstract class GlobalCupertinoLocalizations implements CupertinoLocalizations {
|
|||||||
).replaceFirst(r'$second', _decimalFormat.format(second));
|
).replaceFirst(r'$second', _decimalFormat.format(second));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A [LocalizationsDelegate] that uses [GlobalCupertinoLocalizations.load]
|
/// A [LocalizationsDelegate] for [CupertinoLocalizations].
|
||||||
/// to create an instance of this class.
|
|
||||||
///
|
///
|
||||||
/// Most internationalized apps will use [GlobalCupertinoLocalizations.delegates]
|
/// Most internationalized apps will use [GlobalCupertinoLocalizations.delegates]
|
||||||
/// as the value of [CupertinoApp.localizationsDelegates] to include
|
/// as the value of [CupertinoApp.localizationsDelegates] to include
|
||||||
|
@ -79,7 +79,7 @@ abstract class GlobalMaterialLocalizations implements MaterialLocalizations {
|
|||||||
/// 4. The [intl.DateFormat] for [formatMediumDate].
|
/// 4. The [intl.DateFormat] for [formatMediumDate].
|
||||||
/// 5. The [intl.DateFormat] for [formatFullDate].
|
/// 5. The [intl.DateFormat] for [formatFullDate].
|
||||||
/// 6. The [intl.DateFormat] for [formatMonthYear].
|
/// 6. The [intl.DateFormat] for [formatMonthYear].
|
||||||
/// 7. The [int.DateFormat] for [formatShortMonthDay].
|
/// 7. The [intl.DateFormat] for [formatShortMonthDay].
|
||||||
/// 8. The [NumberFormat] for [formatDecimal] (also used by [formatHour] and
|
/// 8. The [NumberFormat] for [formatDecimal] (also used by [formatHour] and
|
||||||
/// [formatTimeOfDay] when [timeOfDayFormat] doesn't use [HourFormat.HH]).
|
/// [formatTimeOfDay] when [timeOfDayFormat] doesn't use [HourFormat.HH]).
|
||||||
/// 9. The [NumberFormat] for [formatHour] and the hour part of
|
/// 9. The [NumberFormat] for [formatHour] and the hour part of
|
||||||
@ -667,8 +667,7 @@ abstract class GlobalMaterialLocalizations implements MaterialLocalizations {
|
|||||||
@override
|
@override
|
||||||
ScriptCategory get scriptCategory;
|
ScriptCategory get scriptCategory;
|
||||||
|
|
||||||
/// A [LocalizationsDelegate] that uses [GlobalMaterialLocalizations.load]
|
/// A [LocalizationsDelegate] for [MaterialLocalizations].
|
||||||
/// to create an instance of this class.
|
|
||||||
///
|
///
|
||||||
/// Most internationalized apps will use [GlobalMaterialLocalizations.delegates]
|
/// Most internationalized apps will use [GlobalMaterialLocalizations.delegates]
|
||||||
/// as the value of [MaterialApp.localizationsDelegates] to include
|
/// as the value of [MaterialApp.localizationsDelegates] to include
|
||||||
|
@ -59,7 +59,7 @@ class GlobalWidgetsLocalizations implements WidgetsLocalizations {
|
|||||||
/// A [LocalizationsDelegate] that uses [GlobalWidgetsLocalizations.load]
|
/// A [LocalizationsDelegate] that uses [GlobalWidgetsLocalizations.load]
|
||||||
/// to create an instance of this class.
|
/// to create an instance of this class.
|
||||||
///
|
///
|
||||||
/// [WidgetsApp] automatically adds this value to [WidgetApp.localizationsDelegates].
|
/// [WidgetsApp] automatically adds this value to [WidgetsApp.localizationsDelegates].
|
||||||
static const LocalizationsDelegate<WidgetsLocalizations> delegate = _WidgetsLocalizationsDelegate();
|
static const LocalizationsDelegate<WidgetsLocalizations> delegate = _WidgetsLocalizationsDelegate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
/// animation sheet, and can be matched against the golden test.
|
/// animation sheet, and can be matched against the golden test.
|
||||||
///
|
///
|
||||||
/// {@tool snippet}
|
/// {@tool snippet}
|
||||||
/// The following example shows how to record an animation sheet of an [Inkwell]
|
/// The following example shows how to record an animation sheet of an [InkWell]
|
||||||
/// being pressed then released.
|
/// being pressed then released.
|
||||||
///
|
///
|
||||||
/// ```dart
|
/// ```dart
|
||||||
|
@ -252,10 +252,10 @@ abstract class TestWidgetsFlutterBinding extends BindingBase
|
|||||||
/// This method has no effect on the timeout specified via `timeout` on
|
/// This method has no effect on the timeout specified via `timeout` on
|
||||||
/// [testWidgets]. That timeout is implemented by the `test` package.
|
/// [testWidgets]. That timeout is implemented by the `test` package.
|
||||||
///
|
///
|
||||||
/// By default, each [pump] and [pumpWidget] call increases the timeout by a
|
/// By default, each [pump] and [WidgetTester.pumpWidget] call increases the
|
||||||
/// hundred milliseconds, and each [matchesGoldenFile] expectation increases
|
/// timeout by a hundred milliseconds, and each [matchesGoldenFile]
|
||||||
/// it by a minute. If there is no timeout in the first place, this has no
|
/// expectation increases it by a minute. If there is no timeout in the first
|
||||||
/// effect.
|
/// place, this has no effect.
|
||||||
///
|
///
|
||||||
/// The granularity of timeouts is coarse: the time is checked once per
|
/// The granularity of timeouts is coarse: the time is checked once per
|
||||||
/// second, and only when the test is not executing. It is therefore possible
|
/// second, and only when the test is not executing. It is therefore possible
|
||||||
|
@ -221,7 +221,7 @@ abstract class WebGoldenComparator {
|
|||||||
/// updates the files on disk to match the rendering.
|
/// updates the files on disk to match the rendering.
|
||||||
///
|
///
|
||||||
/// When using `flutter run`, the default comparator
|
/// When using `flutter run`, the default comparator
|
||||||
/// ([_TrivialWebGoldenComparator]) is used. It prints a message to the console
|
/// (`_TrivialWebGoldenComparator`) is used. It prints a message to the console
|
||||||
/// but otherwise does nothing. This allows tests to be developed visually on a
|
/// but otherwise does nothing. This allows tests to be developed visually on a
|
||||||
/// web browser.
|
/// web browser.
|
||||||
///
|
///
|
||||||
|
@ -275,7 +275,7 @@ Matcher offsetMoreOrLessEquals(Offset value, { double epsilon = precisionErrorTo
|
|||||||
/// with ids that match the pattern #[0-9a-f]{5}.
|
/// with ids that match the pattern #[0-9a-f]{5}.
|
||||||
/// * [shortHash], a method that generates a 5 character long hexadecimal
|
/// * [shortHash], a method that generates a 5 character long hexadecimal
|
||||||
/// [String] based on [Object.hashCode].
|
/// [String] based on [Object.hashCode].
|
||||||
/// * [TreeDiagnosticsMixin.toStringDeep], a method that returns a [String]
|
/// * [DiagnosticableTree.toStringDeep], a method that returns a [String]
|
||||||
/// typically containing multiple hash codes.
|
/// typically containing multiple hash codes.
|
||||||
Matcher equalsIgnoringHashCodes(String value) {
|
Matcher equalsIgnoringHashCodes(String value) {
|
||||||
return _EqualsIgnoringHashCodes(value);
|
return _EqualsIgnoringHashCodes(value);
|
||||||
@ -416,7 +416,7 @@ AsyncMatcher matchesReferenceImage(ui.Image image) {
|
|||||||
/// provided, then they are not part of the comparison. All of the boolean
|
/// provided, then they are not part of the comparison. All of the boolean
|
||||||
/// flag and action fields must match, and default to false.
|
/// flag and action fields must match, and default to false.
|
||||||
///
|
///
|
||||||
/// To retrieve the semantics data of a widget, use [tester.getSemantics]
|
/// To retrieve the semantics data of a widget, use [WidgetTester.getSemantics]
|
||||||
/// with a [Finder] that returns a single widget. Semantics must be enabled
|
/// with a [Finder] that returns a single widget. Semantics must be enabled
|
||||||
/// in order to use this method.
|
/// in order to use this method.
|
||||||
///
|
///
|
||||||
|
@ -180,47 +180,9 @@ void test(
|
|||||||
/// of any tests or sub-groups it contains. [setUp] and [tearDown] are also scoped
|
/// of any tests or sub-groups it contains. [setUp] and [tearDown] are also scoped
|
||||||
/// to the containing group.
|
/// to the containing group.
|
||||||
///
|
///
|
||||||
/// If [testOn] is passed, it's parsed as a [platform selector][]; the test will
|
/// If `skip` is a String or `true`, the group is skipped. If it's a String, it
|
||||||
/// only be run on matching platforms.
|
|
||||||
///
|
|
||||||
/// [platform selector]: https://github.com/dart-lang/test/tree/master/pkgs/test#platform-selectors
|
|
||||||
///
|
|
||||||
/// If [timeout] is passed, it's used to modify or replace the default timeout
|
|
||||||
/// of 30 seconds. Timeout modifications take precedence in suite-group-test
|
|
||||||
/// order, so [timeout] will also modify any timeouts set on the suite, and will
|
|
||||||
/// be modified by any timeouts set on individual tests.
|
|
||||||
///
|
|
||||||
/// If [skip] is a String or `true`, the group is skipped. If it's a String, it
|
|
||||||
/// should explain why the group is skipped; this reason will be printed instead
|
/// should explain why the group is skipped; this reason will be printed instead
|
||||||
/// of running the group's tests.
|
/// of running the group's tests.
|
||||||
///
|
|
||||||
/// If [tags] is passed, it declares user-defined tags that are applied to the
|
|
||||||
/// test. These tags can be used to select or skip the test on the command line,
|
|
||||||
/// or to do bulk test configuration. All tags should be declared in the
|
|
||||||
/// [package configuration file][configuring tags]. The parameter can be an
|
|
||||||
/// [Iterable] of tag names, or a [String] representing a single tag.
|
|
||||||
///
|
|
||||||
/// [configuring tags]: https://github.com/dart-lang/test/blob/44d6cb196f34a93a975ed5f3cb76afcc3a7b39b0/doc/package_config.md#configuring-tags
|
|
||||||
///
|
|
||||||
/// [onPlatform] allows groups to be configured on a platform-by-platform
|
|
||||||
/// basis. It's a map from strings that are parsed as [PlatformSelector]s to
|
|
||||||
/// annotation classes: [Timeout], [Skip], or lists of those. These
|
|
||||||
/// annotations apply only on the given platforms. For example:
|
|
||||||
///
|
|
||||||
/// group('potentially slow tests', () {
|
|
||||||
/// // ...
|
|
||||||
/// }, onPlatform: {
|
|
||||||
/// // These tests are especially slow on Windows.
|
|
||||||
/// 'windows': new Timeout.factor(2),
|
|
||||||
/// 'browser': [
|
|
||||||
/// new Skip('TODO: add browser support'),
|
|
||||||
/// // They'll be slow on browsers once it works on them.
|
|
||||||
/// new Timeout.factor(2)
|
|
||||||
/// ]
|
|
||||||
/// });
|
|
||||||
///
|
|
||||||
/// If multiple platforms match, the annotations apply in order as through
|
|
||||||
/// they were in nested groups.
|
|
||||||
@isTestGroup
|
@isTestGroup
|
||||||
void group(Object description, void Function() body, { dynamic skip }) {
|
void group(Object description, void Function() body, { dynamic skip }) {
|
||||||
_declarer.group(description.toString(), body, skip: skip);
|
_declarer.group(description.toString(), body, skip: skip);
|
||||||
@ -228,11 +190,11 @@ void group(Object description, void Function() body, { dynamic skip }) {
|
|||||||
|
|
||||||
/// Registers a function to be run before tests.
|
/// Registers a function to be run before tests.
|
||||||
///
|
///
|
||||||
/// This function will be called before each test is run. [callback] may be
|
/// This function will be called before each test is run. The `body` may be
|
||||||
/// asynchronous; if so, it must return a [Future].
|
/// asynchronous; if so, it must return a [Future].
|
||||||
///
|
///
|
||||||
/// If this is called within a test group, it applies only to tests in that
|
/// If this is called within a test group, it applies only to tests in that
|
||||||
/// group. [callback] will be run after any set-up callbacks in parent groups or
|
/// group. The `body` will be run after any set-up callbacks in parent groups or
|
||||||
/// at the top level.
|
/// at the top level.
|
||||||
///
|
///
|
||||||
/// Each callback at the top level or in a given group will be run in the order
|
/// Each callback at the top level or in a given group will be run in the order
|
||||||
@ -243,11 +205,11 @@ void setUp(dynamic Function() body) {
|
|||||||
|
|
||||||
/// Registers a function to be run after tests.
|
/// Registers a function to be run after tests.
|
||||||
///
|
///
|
||||||
/// This function will be called after each test is run. [callback] may be
|
/// This function will be called after each test is run. The `body` may be
|
||||||
/// asynchronous; if so, it must return a [Future].
|
/// asynchronous; if so, it must return a [Future].
|
||||||
///
|
///
|
||||||
/// If this is called within a test group, it applies only to tests in that
|
/// If this is called within a test group, it applies only to tests in that
|
||||||
/// group. [callback] will be run before any tear-down callbacks in parent
|
/// group. The `body` will be run before any tear-down callbacks in parent
|
||||||
/// groups or at the top level.
|
/// groups or at the top level.
|
||||||
///
|
///
|
||||||
/// Each callback at the top level or in a given group will be run in the
|
/// Each callback at the top level or in a given group will be run in the
|
||||||
@ -260,9 +222,9 @@ void tearDown(dynamic Function() body) {
|
|||||||
|
|
||||||
/// Registers a function to be run once before all tests.
|
/// Registers a function to be run once before all tests.
|
||||||
///
|
///
|
||||||
/// [callback] may be asynchronous; if so, it must return a [Future].
|
/// The `body` may be asynchronous; if so, it must return a [Future].
|
||||||
///
|
///
|
||||||
/// If this is called within a test group, [callback] will run before all tests
|
/// If this is called within a test group, The `body` will run before all tests
|
||||||
/// in that group. It will be run after any [setUpAll] callbacks in parent
|
/// in that group. It will be run after any [setUpAll] callbacks in parent
|
||||||
/// groups or at the top level. It won't be run if none of the tests in the
|
/// groups or at the top level. It won't be run if none of the tests in the
|
||||||
/// group are run.
|
/// group are run.
|
||||||
@ -277,7 +239,7 @@ void setUpAll(dynamic Function() body) {
|
|||||||
|
|
||||||
/// Registers a function to be run once after all tests.
|
/// Registers a function to be run once after all tests.
|
||||||
///
|
///
|
||||||
/// If this is called within a test group, [callback] will run after all tests
|
/// If this is called within a test group, `body` will run after all tests
|
||||||
/// in that group. It will be run before any [tearDownAll] callbacks in parent
|
/// in that group. It will be run before any [tearDownAll] callbacks in parent
|
||||||
/// groups or at the top level. It won't be run if none of the tests in the
|
/// groups or at the top level. It won't be run if none of the tests in the
|
||||||
/// group are run.
|
/// group are run.
|
||||||
|
@ -64,7 +64,7 @@ class TestTextInput {
|
|||||||
/// Log for method calls.
|
/// Log for method calls.
|
||||||
///
|
///
|
||||||
/// For all registered channels, handled calls are added to the list. Can
|
/// For all registered channels, handled calls are added to the list. Can
|
||||||
/// be cleaned using [clearLog].
|
/// be cleaned using `log.clear()`.
|
||||||
final List<MethodCall> log = <MethodCall>[];
|
final List<MethodCall> log = <MethodCall>[];
|
||||||
|
|
||||||
/// Whether this [TestTextInput] is registered with [SystemChannels.textInput].
|
/// Whether this [TestTextInput] is registered with [SystemChannels.textInput].
|
||||||
|
Loading…
x
Reference in New Issue
Block a user