Add punctuation for unterminated sentences in doc comments (#62755)
* Add punctuation for unterminated sentences in doc comments * Addressing review nit
This commit is contained in:
parent
3af97d228c
commit
43c1b34cf5
@ -10,18 +10,18 @@ import 'tween.dart';
|
|||||||
// Examples can assume:
|
// Examples can assume:
|
||||||
// AnimationController _controller;
|
// AnimationController _controller;
|
||||||
|
|
||||||
/// The status of an animation
|
/// The status of an animation.
|
||||||
enum AnimationStatus {
|
enum AnimationStatus {
|
||||||
/// The animation is stopped at the beginning
|
/// The animation is stopped at the beginning.
|
||||||
dismissed,
|
dismissed,
|
||||||
|
|
||||||
/// The animation is running from beginning to end
|
/// The animation is running from beginning to end.
|
||||||
forward,
|
forward,
|
||||||
|
|
||||||
/// The animation is running backwards, from end to beginning
|
/// The animation is running backwards, from end to beginning.
|
||||||
reverse,
|
reverse,
|
||||||
|
|
||||||
/// The animation is stopped at the end
|
/// The animation is stopped at the end.
|
||||||
completed,
|
completed,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,19 +36,19 @@ enum DatePickerDateTimeOrder {
|
|||||||
enum DatePickerDateOrder {
|
enum DatePickerDateOrder {
|
||||||
/// Order of the columns, from left to right: day, month, year.
|
/// Order of the columns, from left to right: day, month, year.
|
||||||
///
|
///
|
||||||
/// Example: 12 | March | 1996
|
/// Example: 12 | March | 1996.
|
||||||
dmy,
|
dmy,
|
||||||
/// Order of the columns, from left to right: month, day, year.
|
/// Order of the columns, from left to right: month, day, year.
|
||||||
///
|
///
|
||||||
/// Example: March | 12 | 1996
|
/// Example: March | 12 | 1996.
|
||||||
mdy,
|
mdy,
|
||||||
/// Order of the columns, from left to right: year, month, day.
|
/// Order of the columns, from left to right: year, month, day.
|
||||||
///
|
///
|
||||||
/// Example: 1996 | March | 12
|
/// Example: 1996 | March | 12.
|
||||||
ymd,
|
ymd,
|
||||||
/// Order of the columns, from left to right: year, day, month.
|
/// Order of the columns, from left to right: year, day, month.
|
||||||
///
|
///
|
||||||
/// Example: 1996 | 12 | March
|
/// Example: 1996 | 12 | March.
|
||||||
ydm,
|
ydm,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,19 +208,19 @@ abstract class CupertinoLocalizations {
|
|||||||
// The global version uses the translated string from the arb file.
|
// The global version uses the translated string from the arb file.
|
||||||
String timerPickerSecondLabel(int second);
|
String timerPickerSecondLabel(int second);
|
||||||
|
|
||||||
/// The term used for cutting
|
/// The term used for cutting.
|
||||||
// The global version uses the translated string from the arb file.
|
// The global version uses the translated string from the arb file.
|
||||||
String get cutButtonLabel;
|
String get cutButtonLabel;
|
||||||
|
|
||||||
/// The term used for copying
|
/// The term used for copying.
|
||||||
// The global version uses the translated string from the arb file.
|
// The global version uses the translated string from the arb file.
|
||||||
String get copyButtonLabel;
|
String get copyButtonLabel;
|
||||||
|
|
||||||
/// The term used for pasting
|
/// The term used for pasting.
|
||||||
// The global version uses the translated string from the arb file.
|
// The global version uses the translated string from the arb file.
|
||||||
String get pasteButtonLabel;
|
String get pasteButtonLabel;
|
||||||
|
|
||||||
/// The term used for selecting everything
|
/// The term used for selecting everything.
|
||||||
// The global version uses the translated string from the arb file.
|
// The global version uses the translated string from the arb file.
|
||||||
String get selectAllButtonLabel;
|
String get selectAllButtonLabel;
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@ class CupertinoSegmentedControl<T> extends StatefulWidget {
|
|||||||
/// Defaults to the selectedColor at 20% opacity if null.
|
/// Defaults to the selectedColor at 20% opacity if null.
|
||||||
final Color pressedColor;
|
final Color pressedColor;
|
||||||
|
|
||||||
/// The CupertinoSegmentedControl will be placed inside this padding
|
/// The CupertinoSegmentedControl will be placed inside this padding.
|
||||||
///
|
///
|
||||||
/// Defaults to EdgeInsets.symmetric(horizontal: 16.0)
|
/// Defaults to EdgeInsets.symmetric(horizontal: 16.0)
|
||||||
final EdgeInsetsGeometry padding;
|
final EdgeInsetsGeometry padding;
|
||||||
|
@ -99,7 +99,7 @@ abstract class StackFilter {
|
|||||||
/// Filters the list of [StackFrame]s by updating corresponding indices in
|
/// Filters the list of [StackFrame]s by updating corresponding indices in
|
||||||
/// `reasons`.
|
/// `reasons`.
|
||||||
///
|
///
|
||||||
/// To elide a frame or number of frames, set the string
|
/// To elide a frame or number of frames, set the string.
|
||||||
void filter(List<StackFrame> stackFrames, List<String?> reasons);
|
void filter(List<StackFrame> stackFrames, List<String?> reasons);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ class TextTreeConfiguration {
|
|||||||
/// Prefix to add to other lines to display a child with this style.
|
/// Prefix to add to other lines to display a child with this style.
|
||||||
///
|
///
|
||||||
/// [prefixOtherLines] should typically be one character shorter than
|
/// [prefixOtherLines] should typically be one character shorter than
|
||||||
/// [prefixLineOne] as
|
/// [prefixLineOne] is.
|
||||||
final String prefixOtherLines;
|
final String prefixOtherLines;
|
||||||
|
|
||||||
/// Prefix to add to the first line to display the last child of a node with
|
/// Prefix to add to the first line to display the last child of a node with
|
||||||
@ -1511,7 +1511,7 @@ abstract class DiagnosticsNode {
|
|||||||
/// will make the name self-evident.
|
/// will make the name self-evident.
|
||||||
final bool showName;
|
final bool showName;
|
||||||
|
|
||||||
/// Prefix to include at the start of each line
|
/// Prefix to include at the start of each line.
|
||||||
final String? linePrefix;
|
final String? linePrefix;
|
||||||
|
|
||||||
/// Description to show if the node has no displayed properties or children.
|
/// Description to show if the node has no displayed properties or children.
|
||||||
|
@ -15,26 +15,26 @@ class Unicode {
|
|||||||
// prevents instantiation and extension.
|
// prevents instantiation and extension.
|
||||||
// ignore: unused_element
|
// ignore: unused_element
|
||||||
Unicode._();
|
Unicode._();
|
||||||
/// U+202A LEFT-TO-RIGHT EMBEDDING
|
/// `U+202A LEFT-TO-RIGHT EMBEDDING`
|
||||||
///
|
///
|
||||||
/// Treat the following text as embedded left-to-right.
|
/// Treat the following text as embedded left-to-right.
|
||||||
///
|
///
|
||||||
/// Use [PDF] to end the embedding.
|
/// Use [PDF] to end the embedding.
|
||||||
static const String LRE = '\u202A';
|
static const String LRE = '\u202A';
|
||||||
|
|
||||||
/// U+202B RIGHT-TO-LEFT EMBEDDING
|
/// `U+202B RIGHT-TO-LEFT EMBEDDING`
|
||||||
///
|
///
|
||||||
/// Treat the following text as embedded right-to-left.
|
/// Treat the following text as embedded right-to-left.
|
||||||
///
|
///
|
||||||
/// Use [PDF] to end the embedding.
|
/// Use [PDF] to end the embedding.
|
||||||
static const String RLE = '\u202B';
|
static const String RLE = '\u202B';
|
||||||
|
|
||||||
/// U+202C POP DIRECTIONAL FORMATTING
|
/// `U+202C POP DIRECTIONAL FORMATTING`
|
||||||
///
|
///
|
||||||
/// End the scope of the last [LRE], [RLE], [RLO], or [LRO].
|
/// End the scope of the last [LRE], [RLE], [RLO], or [LRO].
|
||||||
static const String PDF = '\u202C';
|
static const String PDF = '\u202C';
|
||||||
|
|
||||||
/// U+202A LEFT-TO-RIGHT OVERRIDE
|
/// `U+202A LEFT-TO-RIGHT OVERRIDE`
|
||||||
///
|
///
|
||||||
/// Force following characters to be treated as strong left-to-right characters.
|
/// Force following characters to be treated as strong left-to-right characters.
|
||||||
///
|
///
|
||||||
@ -43,7 +43,7 @@ class Unicode {
|
|||||||
/// Use [PDF] to end the override.
|
/// Use [PDF] to end the override.
|
||||||
static const String LRO = '\u202D';
|
static const String LRO = '\u202D';
|
||||||
|
|
||||||
/// U+202B RIGHT-TO-LEFT OVERRIDE
|
/// `U+202B RIGHT-TO-LEFT OVERRIDE`
|
||||||
///
|
///
|
||||||
/// Force following characters to be treated as strong right-to-left characters.
|
/// Force following characters to be treated as strong right-to-left characters.
|
||||||
///
|
///
|
||||||
@ -52,21 +52,21 @@ class Unicode {
|
|||||||
/// Use [PDF] to end the override.
|
/// Use [PDF] to end the override.
|
||||||
static const String RLO = '\u202E';
|
static const String RLO = '\u202E';
|
||||||
|
|
||||||
/// U+2066 LEFT-TO-RIGHT ISOLATE
|
/// `U+2066 LEFT-TO-RIGHT ISOLATE`
|
||||||
///
|
///
|
||||||
/// Treat the following text as isolated and left-to-right.
|
/// Treat the following text as isolated and left-to-right.
|
||||||
///
|
///
|
||||||
/// Use [PDI] to end the isolated scope.
|
/// Use [PDI] to end the isolated scope.
|
||||||
static const String LRI = '\u2066';
|
static const String LRI = '\u2066';
|
||||||
|
|
||||||
/// U+2067 RIGHT-TO-LEFT ISOLATE
|
/// `U+2067 RIGHT-TO-LEFT ISOLATE`
|
||||||
///
|
///
|
||||||
/// Treat the following text as isolated and right-to-left.
|
/// Treat the following text as isolated and right-to-left.
|
||||||
///
|
///
|
||||||
/// Use [PDI] to end the isolated scope.
|
/// Use [PDI] to end the isolated scope.
|
||||||
static const String RLI = '\u2067';
|
static const String RLI = '\u2067';
|
||||||
|
|
||||||
/// U+2068 FIRST STRONG ISOLATE
|
/// `U+2068 FIRST STRONG ISOLATE`
|
||||||
///
|
///
|
||||||
/// Treat the following text as isolated and in the direction of its first
|
/// Treat the following text as isolated and in the direction of its first
|
||||||
/// strong directional character that is not inside a nested isolate.
|
/// strong directional character that is not inside a nested isolate.
|
||||||
@ -79,22 +79,22 @@ class Unicode {
|
|||||||
/// Use [PDI] to end the isolated scope.
|
/// Use [PDI] to end the isolated scope.
|
||||||
static const String FSI = '\u2068';
|
static const String FSI = '\u2068';
|
||||||
|
|
||||||
/// U+2069 POP DIRECTIONAL ISOLATE
|
/// `U+2069 POP DIRECTIONAL ISOLATE`
|
||||||
///
|
///
|
||||||
/// End the scope of the last [LRI], [RLI], or [FSI].
|
/// End the scope of the last [LRI], [RLI], or [FSI].
|
||||||
static const String PDI = '\u2069';
|
static const String PDI = '\u2069';
|
||||||
|
|
||||||
/// U+200E LEFT-TO-RIGHT MARK
|
/// `U+200E LEFT-TO-RIGHT MARK`
|
||||||
///
|
///
|
||||||
/// Left-to-right zero-width character.
|
/// Left-to-right zero-width character.
|
||||||
static const String LRM = '\u200E';
|
static const String LRM = '\u200E';
|
||||||
|
|
||||||
/// U+200F RIGHT-TO-LEFT MARK
|
/// `U+200F RIGHT-TO-LEFT MARK`
|
||||||
///
|
///
|
||||||
/// Right-to-left zero-width non-Arabic character.
|
/// Right-to-left zero-width non-Arabic character.
|
||||||
static const String RLM = '\u200F';
|
static const String RLM = '\u200F';
|
||||||
|
|
||||||
/// U+061C ARABIC LETTER MARK
|
/// `U+061C ARABIC LETTER MARK`
|
||||||
///
|
///
|
||||||
/// Right-to-left zero-width Arabic character.
|
/// Right-to-left zero-width Arabic character.
|
||||||
static const String ALM = '\u061C';
|
static const String ALM = '\u061C';
|
||||||
|
@ -359,7 +359,7 @@ class ScaleGestureRecognizer extends OneSequenceGestureRecognizer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Updates [_initialLine] and [_currentLine] accordingly to the situation of
|
/// Updates [_initialLine] and [_currentLine] accordingly to the situation of
|
||||||
/// the registered pointers
|
/// the registered pointers.
|
||||||
void _updateLines() {
|
void _updateLines() {
|
||||||
final int count = _pointerLocations.keys.length;
|
final int count = _pointerLocations.keys.length;
|
||||||
assert(_pointerQueue.length >= count);
|
assert(_pointerQueue.length >= count);
|
||||||
|
@ -11,7 +11,7 @@ import 'constants.dart';
|
|||||||
import 'events.dart';
|
import 'events.dart';
|
||||||
import 'recognizer.dart';
|
import 'recognizer.dart';
|
||||||
|
|
||||||
/// Details for [GestureTapDownCallback], such as position
|
/// Details for [GestureTapDownCallback], such as position.
|
||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
|
@ -279,7 +279,7 @@ class BottomNavigationBar extends StatefulWidget {
|
|||||||
final IconThemeData selectedIconTheme;
|
final IconThemeData selectedIconTheme;
|
||||||
|
|
||||||
/// The size, opacity, and color of the icon in the currently unselected
|
/// The size, opacity, and color of the icon in the currently unselected
|
||||||
/// [BottomNavigationBarItem.icon]s
|
/// [BottomNavigationBarItem.icon]s.
|
||||||
///
|
///
|
||||||
/// If this is not provided, the size will default to [iconSize], the color
|
/// If this is not provided, the size will default to [iconSize], the color
|
||||||
/// will default to [unselectedItemColor].
|
/// will default to [unselectedItemColor].
|
||||||
|
@ -1430,7 +1430,7 @@ class RawChip extends StatefulWidget
|
|||||||
CheckmarkableChipAttributes,
|
CheckmarkableChipAttributes,
|
||||||
DisabledChipAttributes,
|
DisabledChipAttributes,
|
||||||
TappableChipAttributes {
|
TappableChipAttributes {
|
||||||
/// Creates a RawChip
|
/// Creates a RawChip.
|
||||||
///
|
///
|
||||||
/// The [onPressed] and [onSelected] callbacks must not both be specified at
|
/// The [onPressed] and [onSelected] callbacks must not both be specified at
|
||||||
/// the same time.
|
/// the same time.
|
||||||
|
@ -18,7 +18,7 @@ import 'theme_data.dart';
|
|||||||
/// [InputChip], [ChoiceChip], [FilterChip], and [ActionChip].
|
/// [InputChip], [ChoiceChip], [FilterChip], and [ActionChip].
|
||||||
///
|
///
|
||||||
/// A chip theme describes the color, shape and text styles for the chips it is
|
/// A chip theme describes the color, shape and text styles for the chips it is
|
||||||
/// applied to
|
/// applied to.
|
||||||
///
|
///
|
||||||
/// Descendant widgets obtain the current theme's [ChipThemeData] object using
|
/// Descendant widgets obtain the current theme's [ChipThemeData] object using
|
||||||
/// [ChipTheme.of]. When a widget uses [ChipTheme.of], it is automatically
|
/// [ChipTheme.of]. When a widget uses [ChipTheme.of], it is automatically
|
||||||
|
@ -179,7 +179,7 @@ class FlexibleSpaceBar extends StatefulWidget {
|
|||||||
/// Defaults to [CollapseMode.parallax].
|
/// Defaults to [CollapseMode.parallax].
|
||||||
final CollapseMode collapseMode;
|
final CollapseMode collapseMode;
|
||||||
|
|
||||||
/// Stretch effect while over-scrolling,
|
/// Stretch effect while over-scrolling.
|
||||||
///
|
///
|
||||||
/// Defaults to include [StretchMode.zoomBackground].
|
/// Defaults to include [StretchMode.zoomBackground].
|
||||||
final List<StretchMode> stretchModes;
|
final List<StretchMode> stretchModes;
|
||||||
|
@ -85,7 +85,7 @@ abstract class InteractiveInkFeature extends InkFeature {
|
|||||||
/// [clipCallback] is the callback used to obtain the [Rect] used for clipping the ink effect.
|
/// [clipCallback] is the callback used to obtain the [Rect] used for clipping the ink effect.
|
||||||
/// If [clipCallback] is null, no clipping is performed on the ink circle.
|
/// If [clipCallback] is null, no clipping is performed on the ink circle.
|
||||||
///
|
///
|
||||||
/// Clipping can happen in 3 different ways -
|
/// Clipping can happen in 3 different ways:
|
||||||
/// 1. If [customBorder] is provided, it is used to determine the path
|
/// 1. If [customBorder] is provided, it is used to determine the path
|
||||||
/// for clipping.
|
/// for clipping.
|
||||||
/// 2. If [customBorder] is null, and [borderRadius] is provided, the canvas
|
/// 2. If [customBorder] is null, and [borderRadius] is provided, the canvas
|
||||||
|
@ -468,7 +468,7 @@ class _HelperErrorState extends State<_HelperError> with SingleTickerProviderSta
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Defines the behavior of the floating label
|
/// Defines the behavior of the floating label.
|
||||||
enum FloatingLabelBehavior {
|
enum FloatingLabelBehavior {
|
||||||
/// The label will always be positioned within the content, or hidden.
|
/// The label will always be positioned within the content, or hidden.
|
||||||
never,
|
never,
|
||||||
|
@ -118,7 +118,7 @@ class MergeableMaterial extends StatefulWidget {
|
|||||||
|
|
||||||
/// The z-coordinate at which to place all the [Material] slices.
|
/// The z-coordinate at which to place all the [Material] slices.
|
||||||
///
|
///
|
||||||
/// The following elevations have defined shadows: 1, 2, 3, 4, 6, 8, 9, 12, 16, 24
|
/// The following elevations have defined shadows: 1, 2, 3, 4, 6, 8, 9, 12, 16, 24.
|
||||||
///
|
///
|
||||||
/// Defaults to 2, the appropriate elevation for cards.
|
/// Defaults to 2, the appropriate elevation for cards.
|
||||||
///
|
///
|
||||||
|
@ -58,7 +58,7 @@ const double _monthNavButtonsWidth = 108.0;
|
|||||||
/// time picker.
|
/// time picker.
|
||||||
///
|
///
|
||||||
class CalendarDatePicker extends StatefulWidget {
|
class CalendarDatePicker extends StatefulWidget {
|
||||||
/// Creates a calender date picker
|
/// Creates a calender date picker.
|
||||||
///
|
///
|
||||||
/// It will display a grid of days for the [initialDate]'s month. The day
|
/// It will display a grid of days for the [initialDate]'s month. The day
|
||||||
/// indicated by [initialDate] will be selected.
|
/// indicated by [initialDate] will be selected.
|
||||||
@ -437,7 +437,7 @@ class _MonthPicker extends StatefulWidget {
|
|||||||
assert(!selectedDate.isAfter(lastDate)),
|
assert(!selectedDate.isAfter(lastDate)),
|
||||||
super(key: key);
|
super(key: key);
|
||||||
|
|
||||||
/// The initial month to display
|
/// The initial month to display.
|
||||||
final DateTime initialMonth;
|
final DateTime initialMonth;
|
||||||
|
|
||||||
/// The current date.
|
/// The current date.
|
||||||
@ -463,7 +463,7 @@ class _MonthPicker extends StatefulWidget {
|
|||||||
/// Called when the user picks a day.
|
/// Called when the user picks a day.
|
||||||
final ValueChanged<DateTime> onChanged;
|
final ValueChanged<DateTime> onChanged;
|
||||||
|
|
||||||
/// Called when the user navigates to a new month
|
/// Called when the user navigates to a new month.
|
||||||
final ValueChanged<DateTime> onDisplayedMonthChanged;
|
final ValueChanged<DateTime> onDisplayedMonthChanged;
|
||||||
|
|
||||||
/// Optional user supplied predicate function to customize selectable days.
|
/// Optional user supplied predicate function to customize selectable days.
|
||||||
|
@ -175,7 +175,7 @@ abstract class SearchDelegate<T> {
|
|||||||
/// clear the query and show the suggestions again (via [showSuggestions]) if
|
/// clear the query and show the suggestions again (via [showSuggestions]) if
|
||||||
/// the results are currently shown.
|
/// the results are currently shown.
|
||||||
///
|
///
|
||||||
/// Returns null if no widget should be shown
|
/// Returns null if no widget should be shown.
|
||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
|
@ -14,7 +14,7 @@ import 'package:flutter/painting.dart';
|
|||||||
|
|
||||||
/// Map of elevation offsets used by material design to [BoxShadow] definitions.
|
/// Map of elevation offsets used by material design to [BoxShadow] definitions.
|
||||||
///
|
///
|
||||||
/// The following elevations have defined shadows: 1, 2, 3, 4, 6, 8, 9, 12, 16, 24
|
/// The following elevations have defined shadows: 1, 2, 3, 4, 6, 8, 9, 12, 16, 24.
|
||||||
///
|
///
|
||||||
/// Each entry has three shadows which must be combined to obtain the defined
|
/// Each entry has three shadows which must be combined to obtain the defined
|
||||||
/// effect for that elevation.
|
/// effect for that elevation.
|
||||||
|
@ -27,7 +27,7 @@ import 'theme_data.dart';
|
|||||||
/// The slider is as big as the largest of
|
/// The slider is as big as the largest of
|
||||||
/// the [SliderComponentShape.getPreferredSize] of the thumb shape,
|
/// the [SliderComponentShape.getPreferredSize] of the thumb shape,
|
||||||
/// the [SliderComponentShape.getPreferredSize] of the overlay shape,
|
/// the [SliderComponentShape.getPreferredSize] of the overlay shape,
|
||||||
/// and the [SliderTickMarkShape.getPreferredSize] of the tick mark shape
|
/// and the [SliderTickMarkShape.getPreferredSize] of the tick mark shape.
|
||||||
///
|
///
|
||||||
/// See also:
|
/// See also:
|
||||||
///
|
///
|
||||||
|
@ -734,7 +734,7 @@ class TabBar extends StatefulWidget implements PreferredSizeWidget {
|
|||||||
/// If this property is null, then kTabLabelPadding is used.
|
/// If this property is null, then kTabLabelPadding is used.
|
||||||
final EdgeInsetsGeometry labelPadding;
|
final EdgeInsetsGeometry labelPadding;
|
||||||
|
|
||||||
/// The text style of the unselected tab labels
|
/// The text style of the unselected tab labels.
|
||||||
///
|
///
|
||||||
/// If this property is null, then the [labelStyle] value is used. If [labelStyle]
|
/// If this property is null, then the [labelStyle] value is used. If [labelStyle]
|
||||||
/// is null, then the text style of the [ThemeData.primaryTextTheme]'s
|
/// is null, then the text style of the [ThemeData.primaryTextTheme]'s
|
||||||
|
@ -29,7 +29,7 @@ export 'package:flutter/services.dart' show TextInputType, TextInputAction, Text
|
|||||||
|
|
||||||
/// Signature for the [TextField.buildCounter] callback.
|
/// Signature for the [TextField.buildCounter] callback.
|
||||||
typedef InputCounterWidgetBuilder = Widget Function(
|
typedef InputCounterWidgetBuilder = Widget Function(
|
||||||
/// The build context for the TextField
|
/// The build context for the TextField.
|
||||||
BuildContext context, {
|
BuildContext context, {
|
||||||
/// The length of the string currently in the input.
|
/// The length of the string currently in the input.
|
||||||
@required int currentLength,
|
@required int currentLength,
|
||||||
|
@ -1097,7 +1097,7 @@ class ThemeData with Diagnosticable {
|
|||||||
final TextButtonThemeData textButtonTheme;
|
final TextButtonThemeData textButtonTheme;
|
||||||
|
|
||||||
/// A theme for customizing the appearance and internal layout of
|
/// A theme for customizing the appearance and internal layout of
|
||||||
/// [ElevatedButton]s
|
/// [ElevatedButton]s.
|
||||||
final ElevatedButtonThemeData elevatedButtonTheme;
|
final ElevatedButtonThemeData elevatedButtonTheme;
|
||||||
|
|
||||||
/// A theme for customizing the appearance and internal layout of
|
/// A theme for customizing the appearance and internal layout of
|
||||||
|
@ -134,7 +134,7 @@ class TimePickerThemeData with Diagnosticable {
|
|||||||
|
|
||||||
/// The color of the entry mode [IconButton].
|
/// The color of the entry mode [IconButton].
|
||||||
///
|
///
|
||||||
/// If this is null, the time picker defaults to
|
/// If this is null, the time picker defaults to:
|
||||||
/// ```
|
/// ```
|
||||||
/// Theme.of(context).colorScheme.onSurface.withOpacity(
|
/// Theme.of(context).colorScheme.onSurface.withOpacity(
|
||||||
/// Theme.of(context).colorScheme.brightness == Brightness.dark ? 1.0 : 0.6,
|
/// Theme.of(context).colorScheme.brightness == Brightness.dark ? 1.0 : 0.6,
|
||||||
|
@ -169,27 +169,27 @@ enum VerticalDirection {
|
|||||||
|
|
||||||
/// A direction along either the horizontal or vertical [Axis].
|
/// A direction along either the horizontal or vertical [Axis].
|
||||||
enum AxisDirection {
|
enum AxisDirection {
|
||||||
/// Zero is at the bottom and positive values are above it: ⇈
|
/// Zero is at the bottom and positive values are above it: `⇈`
|
||||||
///
|
///
|
||||||
/// Alphabetical content with a [GrowthDirection.forward] would have the A at
|
/// Alphabetical content with a [GrowthDirection.forward] would have the A at
|
||||||
/// the bottom and the Z at the top. This is an unusual configuration.
|
/// the bottom and the Z at the top. This is an unusual configuration.
|
||||||
up,
|
up,
|
||||||
|
|
||||||
/// Zero is on the left and positive values are to the right of it: ⇉
|
/// Zero is on the left and positive values are to the right of it: `⇉`
|
||||||
///
|
///
|
||||||
/// Alphabetical content with a [GrowthDirection.forward] would have the A on
|
/// Alphabetical content with a [GrowthDirection.forward] would have the A on
|
||||||
/// the left and the Z on the right. This is the ordinary reading order for a
|
/// the left and the Z on the right. This is the ordinary reading order for a
|
||||||
/// horizontal set of tabs in an English application, for example.
|
/// horizontal set of tabs in an English application, for example.
|
||||||
right,
|
right,
|
||||||
|
|
||||||
/// Zero is at the top and positive values are below it: ⇊
|
/// Zero is at the top and positive values are below it: `⇊`
|
||||||
///
|
///
|
||||||
/// Alphabetical content with a [GrowthDirection.forward] would have the A at
|
/// Alphabetical content with a [GrowthDirection.forward] would have the A at
|
||||||
/// the top and the Z at the bottom. This is the ordinary reading order for a
|
/// the top and the Z at the bottom. This is the ordinary reading order for a
|
||||||
/// vertical list.
|
/// vertical list.
|
||||||
down,
|
down,
|
||||||
|
|
||||||
/// Zero is to the right and positive values are to the left of it: ⇇
|
/// Zero is to the right and positive values are to the left of it: `⇇`
|
||||||
///
|
///
|
||||||
/// Alphabetical content with a [GrowthDirection.forward] would have the A at
|
/// Alphabetical content with a [GrowthDirection.forward] would have the A at
|
||||||
/// the right and the Z at the left. This is the ordinary reading order for a
|
/// the right and the Z at the left. This is the ordinary reading order for a
|
||||||
|
@ -471,7 +471,7 @@ class _BoxDecorationPainter extends BoxPainter {
|
|||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Paint the box decoration into the given location on the given canvas
|
/// Paint the box decoration into the given location on the given canvas.
|
||||||
@override
|
@override
|
||||||
void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) {
|
void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) {
|
||||||
assert(configuration != null);
|
assert(configuration != null);
|
||||||
|
@ -989,7 +989,7 @@ class MemoryImage extends ImageProvider<MemoryImage> {
|
|||||||
/// - icons/heart.png
|
/// - icons/heart.png
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// Then, to fetch the image and associate it with scale `1.5`, use
|
/// Then, to fetch the image and associate it with scale `1.5`, use:
|
||||||
///
|
///
|
||||||
/// ```dart
|
/// ```dart
|
||||||
/// AssetImage('icons/heart.png', scale: 1.5)
|
/// AssetImage('icons/heart.png', scale: 1.5)
|
||||||
|
@ -75,7 +75,7 @@ const String _kAssetManifestFileName = 'AssetManifest.json';
|
|||||||
/// - icons/heart.png
|
/// - icons/heart.png
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// Then, to fetch the image, use
|
/// Then, to fetch the image, use:
|
||||||
/// ```dart
|
/// ```dart
|
||||||
/// AssetImage('icons/heart.png')
|
/// AssetImage('icons/heart.png')
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -68,7 +68,7 @@ abstract class PlaceholderSpan extends InlineSpan {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO(garyq): Remove this after next stable release.
|
// TODO(garyq): Remove this after next stable release.
|
||||||
/// The [visitTextSpan] method is invalid on [PlaceholderSpan]s
|
/// The [visitTextSpan] method is invalid on [PlaceholderSpan]s.
|
||||||
@override
|
@override
|
||||||
@Deprecated(
|
@Deprecated(
|
||||||
'Use to visitChildren instead. '
|
'Use to visitChildren instead. '
|
||||||
|
@ -156,7 +156,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture
|
|||||||
MouseTracker _mouseTracker;
|
MouseTracker _mouseTracker;
|
||||||
|
|
||||||
/// The render tree's owner, which maintains dirty state for layout,
|
/// The render tree's owner, which maintains dirty state for layout,
|
||||||
/// composite, paint, and accessibility semantics
|
/// composite, paint, and accessibility semantics.
|
||||||
PipelineOwner get pipelineOwner => _pipelineOwner;
|
PipelineOwner get pipelineOwner => _pipelineOwner;
|
||||||
PipelineOwner _pipelineOwner;
|
PipelineOwner _pipelineOwner;
|
||||||
|
|
||||||
|
@ -249,7 +249,7 @@ class BoxConstraints extends Constraints {
|
|||||||
BoxConstraints widthConstraints() => BoxConstraints(minWidth: minWidth, maxWidth: maxWidth);
|
BoxConstraints widthConstraints() => BoxConstraints(minWidth: minWidth, maxWidth: maxWidth);
|
||||||
|
|
||||||
/// Returns box constraints with the same height constraints but with
|
/// Returns box constraints with the same height constraints but with
|
||||||
/// unconstrained width
|
/// unconstrained width.
|
||||||
BoxConstraints heightConstraints() => BoxConstraints(minHeight: minHeight, maxHeight: maxHeight);
|
BoxConstraints heightConstraints() => BoxConstraints(minHeight: minHeight, maxHeight: maxHeight);
|
||||||
|
|
||||||
/// Returns the width that both satisfies the constraints and is as close as
|
/// Returns the width that both satisfies the constraints and is as close as
|
||||||
|
@ -316,7 +316,7 @@ class RenderEditable extends RenderBox with RelayoutWhenSystemFontsChangeMixin {
|
|||||||
/// [handleDoubleTap], and [handleLongPress].
|
/// [handleDoubleTap], and [handleLongPress].
|
||||||
///
|
///
|
||||||
/// If there are any gesture recognizers in the text span, the [handleEvent]
|
/// If there are any gesture recognizers in the text span, the [handleEvent]
|
||||||
/// will still propagate pointer events to those recognizers
|
/// will still propagate pointer events to those recognizers.
|
||||||
///
|
///
|
||||||
/// The default value of this property is false.
|
/// The default value of this property is false.
|
||||||
bool ignorePointer;
|
bool ignorePointer;
|
||||||
|
@ -35,7 +35,7 @@ enum FlexFit {
|
|||||||
|
|
||||||
/// Parent data for use with [RenderFlex].
|
/// Parent data for use with [RenderFlex].
|
||||||
class FlexParentData extends ContainerBoxParentData<RenderBox> {
|
class FlexParentData extends ContainerBoxParentData<RenderBox> {
|
||||||
/// The flex factor to use for this child
|
/// The flex factor to use for this child.
|
||||||
///
|
///
|
||||||
/// If null or zero, the child is inflexible and determines its own size. If
|
/// If null or zero, the child is inflexible and determines its own size. If
|
||||||
/// non-zero, the amount of space the child's can occupy in the main axis is
|
/// non-zero, the amount of space the child's can occupy in the main axis is
|
||||||
|
@ -440,7 +440,7 @@ class BaseMouseTracker extends ChangeNotifier {
|
|||||||
/// Override this method to receive updates when the relationship between a
|
/// Override this method to receive updates when the relationship between a
|
||||||
/// device and annotations have changed. Subclasses should override this method
|
/// device and annotations have changed. Subclasses should override this method
|
||||||
/// to first call to their inherited [handleDeviceUpdate] method, and then
|
/// to first call to their inherited [handleDeviceUpdate] method, and then
|
||||||
/// process the update as desired,
|
/// process the update as desired.
|
||||||
///
|
///
|
||||||
/// The update can be caused by two kinds of triggers:
|
/// The update can be caused by two kinds of triggers:
|
||||||
///
|
///
|
||||||
|
@ -676,7 +676,7 @@ abstract class Constraints {
|
|||||||
/// const constructors so that they can be used in const expressions.
|
/// const constructors so that they can be used in const expressions.
|
||||||
const Constraints();
|
const Constraints();
|
||||||
|
|
||||||
/// Whether there is exactly one size possible given these constraints
|
/// Whether there is exactly one size possible given these constraints.
|
||||||
bool get isTight;
|
bool get isTight;
|
||||||
|
|
||||||
/// Whether the constraint is expressed in a consistent manner.
|
/// Whether the constraint is expressed in a consistent manner.
|
||||||
@ -2987,7 +2987,7 @@ mixin RenderObjectWithChildMixin<ChildType extends RenderObject> on RenderObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
ChildType _child;
|
ChildType _child;
|
||||||
/// The render object's unique child
|
/// The render object's unique child.
|
||||||
ChildType get child => _child;
|
ChildType get child => _child;
|
||||||
set child(ChildType value) {
|
set child(ChildType value) {
|
||||||
if (_child != null)
|
if (_child != null)
|
||||||
|
@ -207,7 +207,7 @@ class RenderConstrainedBox extends RenderProxyBox {
|
|||||||
_additionalConstraints = additionalConstraints,
|
_additionalConstraints = additionalConstraints,
|
||||||
super(child);
|
super(child);
|
||||||
|
|
||||||
/// Additional constraints to apply to [child] during layout
|
/// Additional constraints to apply to [child] during layout.
|
||||||
BoxConstraints get additionalConstraints => _additionalConstraints;
|
BoxConstraints get additionalConstraints => _additionalConstraints;
|
||||||
BoxConstraints _additionalConstraints;
|
BoxConstraints _additionalConstraints;
|
||||||
set additionalConstraints(BoxConstraints value) {
|
set additionalConstraints(BoxConstraints value) {
|
||||||
@ -3403,7 +3403,7 @@ class RenderMetaData extends RenderProxyBoxWithHitTestBehavior {
|
|||||||
RenderBox child,
|
RenderBox child,
|
||||||
}) : super(behavior: behavior, child: child);
|
}) : super(behavior: behavior, child: child);
|
||||||
|
|
||||||
/// Opaque meta data ignored by the render tree
|
/// Opaque meta data ignored by the render tree.
|
||||||
dynamic metaData;
|
dynamic metaData;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -284,7 +284,7 @@ enum Overflow {
|
|||||||
clip,
|
clip,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Implements the stack layout algorithm
|
/// Implements the stack layout algorithm.
|
||||||
///
|
///
|
||||||
/// In a stack layout, the children are positioned on top of each other in the
|
/// In a stack layout, the children are positioned on top of each other in the
|
||||||
/// order in which they appear in the child list. First, the non-positioned
|
/// order in which they appear in the child list. First, the non-positioned
|
||||||
|
@ -694,7 +694,7 @@ class SemanticsProperties extends DiagnosticableTree {
|
|||||||
|
|
||||||
/// If non-null, indicates that this subtree is read only.
|
/// If non-null, indicates that this subtree is read only.
|
||||||
///
|
///
|
||||||
/// Only applicable when [textField] is true
|
/// Only applicable when [textField] is true.
|
||||||
///
|
///
|
||||||
/// TalkBack/VoiceOver will treat it as non-editable text field.
|
/// TalkBack/VoiceOver will treat it as non-editable text field.
|
||||||
final bool readOnly;
|
final bool readOnly;
|
||||||
|
@ -712,7 +712,7 @@ class AutofillConfiguration {
|
|||||||
abstract class AutofillClient {
|
abstract class AutofillClient {
|
||||||
/// The unique identifier of this [AutofillClient].
|
/// The unique identifier of this [AutofillClient].
|
||||||
///
|
///
|
||||||
/// Must not be null;
|
/// Must not be null.
|
||||||
String get autofillId;
|
String get autofillId;
|
||||||
|
|
||||||
/// The [TextInputConfiguration] that describes this [AutofillClient].
|
/// The [TextInputConfiguration] that describes this [AutofillClient].
|
||||||
|
@ -53,7 +53,7 @@ abstract class TextInputFormatter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Function signature expected for creating custom [TextInputFormatter]
|
/// Function signature expected for creating custom [TextInputFormatter]
|
||||||
/// shorthands via [TextInputFormatter.withFunction];
|
/// shorthands via [TextInputFormatter.withFunction].
|
||||||
typedef TextInputFormatFunction = TextEditingValue Function(
|
typedef TextInputFormatFunction = TextEditingValue Function(
|
||||||
TextEditingValue oldValue,
|
TextEditingValue oldValue,
|
||||||
TextEditingValue newValue,
|
TextEditingValue newValue,
|
||||||
|
@ -402,7 +402,7 @@ class BackdropFilter extends SingleChildRenderObjectWidget {
|
|||||||
/// The image filter to apply to the existing painted content before painting the child.
|
/// The image filter to apply to the existing painted content before painting the child.
|
||||||
///
|
///
|
||||||
/// For example, consider using [ImageFilter.blur] to create a backdrop
|
/// For example, consider using [ImageFilter.blur] to create a backdrop
|
||||||
/// blur effect
|
/// blur effect.
|
||||||
final ui.ImageFilter filter;
|
final ui.ImageFilter filter;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -4496,7 +4496,7 @@ class Flexible extends ParentDataWidget<FlexParentData> {
|
|||||||
@required Widget child,
|
@required Widget child,
|
||||||
}) : super(key: key, child: child);
|
}) : super(key: key, child: child);
|
||||||
|
|
||||||
/// The flex factor to use for this child
|
/// The flex factor to use for this child.
|
||||||
///
|
///
|
||||||
/// If null or zero, the child is inflexible and determines its own size. If
|
/// If null or zero, the child is inflexible and determines its own size. If
|
||||||
/// non-zero, the amount of space the child's can occupy in the main axis is
|
/// non-zero, the amount of space the child's can occupy in the main axis is
|
||||||
@ -6493,7 +6493,7 @@ class IgnorePointer extends SingleChildRenderObjectWidget {
|
|||||||
class AbsorbPointer extends SingleChildRenderObjectWidget {
|
class AbsorbPointer extends SingleChildRenderObjectWidget {
|
||||||
/// Creates a widget that absorbs pointers during hit testing.
|
/// Creates a widget that absorbs pointers during hit testing.
|
||||||
///
|
///
|
||||||
/// The [absorbing] argument must not be null
|
/// The [absorbing] argument must not be null.
|
||||||
const AbsorbPointer({
|
const AbsorbPointer({
|
||||||
Key key,
|
Key key,
|
||||||
this.absorbing = true,
|
this.absorbing = true,
|
||||||
@ -6557,7 +6557,7 @@ class MetaData extends SingleChildRenderObjectWidget {
|
|||||||
Widget child,
|
Widget child,
|
||||||
}) : super(key: key, child: child);
|
}) : super(key: key, child: child);
|
||||||
|
|
||||||
/// Opaque meta data ignored by the render tree
|
/// Opaque meta data ignored by the render tree.
|
||||||
final dynamic metaData;
|
final dynamic metaData;
|
||||||
|
|
||||||
/// How to behave during hit testing.
|
/// How to behave during hit testing.
|
||||||
|
@ -1006,7 +1006,7 @@ mixin WidgetsBinding on BindingBase, ServicesBinding, SchedulerBinding, GestureB
|
|||||||
/// The widget is given constraints during layout that force it to fill the
|
/// The widget is given constraints during layout that force it to fill the
|
||||||
/// entire screen. If you wish to align your widget to one side of the screen
|
/// entire screen. If you wish to align your widget to one side of the screen
|
||||||
/// (e.g., the top), consider using the [Align] widget. If you wish to center
|
/// (e.g., the top), consider using the [Align] widget. If you wish to center
|
||||||
/// your widget, you can also use the [Center] widget
|
/// your widget, you can also use the [Center] widget.
|
||||||
///
|
///
|
||||||
/// Calling [runApp] again will detach the previous root widget from the screen
|
/// Calling [runApp] again will detach the previous root widget from the screen
|
||||||
/// and attach the given widget in its place. The new widget tree is compared
|
/// and attach the given widget in its place. The new widget tree is compared
|
||||||
|
@ -515,7 +515,7 @@ class EditableText extends StatefulWidget {
|
|||||||
/// {@endtemplate}
|
/// {@endtemplate}
|
||||||
final bool obscureText;
|
final bool obscureText;
|
||||||
|
|
||||||
/// {@macro flutter.dart:ui.textHeightBehavior},
|
/// {@macro flutter.dart:ui.textHeightBehavior}
|
||||||
final TextHeightBehavior textHeightBehavior;
|
final TextHeightBehavior textHeightBehavior;
|
||||||
|
|
||||||
/// {@macro flutter.painting.textPainter.textWidthBasis}
|
/// {@macro flutter.painting.textPainter.textWidthBasis}
|
||||||
@ -814,7 +814,7 @@ class EditableText extends StatefulWidget {
|
|||||||
/// See the examples in [maxLines] for the complete picture of how [maxLines],
|
/// See the examples in [maxLines] for the complete picture of how [maxLines],
|
||||||
/// [minLines], and [expands] interact to produce various behaviors.
|
/// [minLines], and [expands] interact to produce various behaviors.
|
||||||
///
|
///
|
||||||
/// Input that matches the height of its parent
|
/// Input that matches the height of its parent:
|
||||||
/// ```dart
|
/// ```dart
|
||||||
/// Expanded(
|
/// Expanded(
|
||||||
/// child: TextField(maxLines: null, expands: true),
|
/// child: TextField(maxLines: null, expands: true),
|
||||||
@ -1064,7 +1064,7 @@ class EditableText extends StatefulWidget {
|
|||||||
/// {@template flutter.widgets.editableText.cursorWidth}
|
/// {@template flutter.widgets.editableText.cursorWidth}
|
||||||
/// How thick the cursor will be.
|
/// How thick the cursor will be.
|
||||||
///
|
///
|
||||||
/// Defaults to 2.0
|
/// Defaults to 2.0.
|
||||||
///
|
///
|
||||||
/// The cursor will draw under the text. The cursor width will extend
|
/// The cursor will draw under the text. The cursor width will extend
|
||||||
/// to the right of the boundary between characters for left-to-right text
|
/// to the right of the boundary between characters for left-to-right text
|
||||||
|
@ -563,7 +563,7 @@ class FixedExtentScrollPhysics extends ScrollPhysics {
|
|||||||
///
|
///
|
||||||
/// When the list is at the zero scroll offset, the first child is aligned with
|
/// When the list is at the zero scroll offset, the first child is aligned with
|
||||||
/// the middle of the viewport. When the list is at the final scroll offset,
|
/// the middle of the viewport. When the list is at the final scroll offset,
|
||||||
/// the last child is aligned with the middle of the viewport
|
/// the last child is aligned with the middle of the viewport.
|
||||||
///
|
///
|
||||||
/// The children are rendered as if rotating on a wheel instead of scrolling on
|
/// The children are rendered as if rotating on a wheel instead of scrolling on
|
||||||
/// a plane.
|
/// a plane.
|
||||||
|
@ -870,7 +870,7 @@ class MediaQuery extends InheritedWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Describes the navigation mode to be set by a [MediaQuery] widget
|
/// Describes the navigation mode to be set by a [MediaQuery] widget.
|
||||||
///
|
///
|
||||||
/// The different modes indicate the type of navigation to be used in a widget
|
/// The different modes indicate the type of navigation to be used in a widget
|
||||||
/// subtree for those widgets sensitive to it.
|
/// subtree for those widgets sensitive to it.
|
||||||
|
@ -38,7 +38,7 @@ class PerformanceOverlay extends LeafRenderObjectWidget {
|
|||||||
this.checkerboardOffscreenLayers = false,
|
this.checkerboardOffscreenLayers = false,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
/// Create a performance overlay that displays all available statistics
|
/// Create a performance overlay that displays all available statistics.
|
||||||
PerformanceOverlay.allEnabled({
|
PerformanceOverlay.allEnabled({
|
||||||
Key key,
|
Key key,
|
||||||
this.rasterizerThreshold = 0,
|
this.rasterizerThreshold = 0,
|
||||||
|
@ -26,7 +26,7 @@ abstract class PreferredSizeWidget implements Widget {
|
|||||||
/// In many cases it's only necessary to define one preferred dimension.
|
/// In many cases it's only necessary to define one preferred dimension.
|
||||||
/// For example the [Scaffold] only depends on its app bar's preferred
|
/// For example the [Scaffold] only depends on its app bar's preferred
|
||||||
/// height. In that case implementations of this method can just return
|
/// height. In that case implementations of this method can just return
|
||||||
/// `new Size.fromHeight(myAppBarHeight)`;
|
/// `new Size.fromHeight(myAppBarHeight)`.
|
||||||
Size get preferredSize;
|
Size get preferredSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,7 +407,9 @@ class SliverFillRemaining extends StatelessWidget {
|
|||||||
assert(fillOverscroll != null),
|
assert(fillOverscroll != null),
|
||||||
super(key: key);
|
super(key: key);
|
||||||
|
|
||||||
/// Doc
|
/// Box child widget that fills the remaining space in the viewport.
|
||||||
|
///
|
||||||
|
/// The main [SliverFillRemaining] documentation contains more details.
|
||||||
final Widget child;
|
final Widget child;
|
||||||
|
|
||||||
/// Indicates whether the child has a scrollable body, this value cannot be
|
/// Indicates whether the child has a scrollable body, this value cannot be
|
||||||
|
@ -27,7 +27,7 @@ class SimpleExpansionPanelListTestWidget extends StatefulWidget {
|
|||||||
/// If null, the default [ExpansionPanelList]'s expanded header padding value is applied via [defaultExpandedHeaderPadding]
|
/// If null, the default [ExpansionPanelList]'s expanded header padding value is applied via [defaultExpandedHeaderPadding]
|
||||||
final EdgeInsets expandedHeaderPadding;
|
final EdgeInsets expandedHeaderPadding;
|
||||||
|
|
||||||
/// Mirrors the default expanded header padding as its source constants are private
|
/// Mirrors the default expanded header padding as its source constants are private.
|
||||||
static EdgeInsets defaultExpandedHeaderPadding()
|
static EdgeInsets defaultExpandedHeaderPadding()
|
||||||
{
|
{
|
||||||
return const ExpansionPanelList().expandedHeaderPadding;
|
return const ExpansionPanelList().expandedHeaderPadding;
|
||||||
|
@ -50,7 +50,7 @@ Matcher get paintsNothing => _TestRecordingCanvasPaintsNothingMatcher();
|
|||||||
/// Matches objects or functions that assert when they try to paint.
|
/// Matches objects or functions that assert when they try to paint.
|
||||||
Matcher get paintsAssertion => _TestRecordingCanvasPaintsAssertionMatcher();
|
Matcher get paintsAssertion => _TestRecordingCanvasPaintsAssertionMatcher();
|
||||||
|
|
||||||
/// Matches objects or functions that draw `methodName` exactly `count` number of times
|
/// Matches objects or functions that draw `methodName` exactly `count` number of times.
|
||||||
Matcher paintsExactlyCountTimes(Symbol methodName, int count) {
|
Matcher paintsExactlyCountTimes(Symbol methodName, int count) {
|
||||||
return _TestRecordingCanvasPaintsCountMatcher(methodName, count);
|
return _TestRecordingCanvasPaintsCountMatcher(methodName, count);
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ class FakePlatformViewController extends PlatformViewController {
|
|||||||
bool disposed = false;
|
bool disposed = false;
|
||||||
bool focusCleared = false;
|
bool focusCleared = false;
|
||||||
|
|
||||||
/// Events that are dispatched;
|
/// Events that are dispatched.
|
||||||
List<PointerEvent> dispatchedPointerEvents = <PointerEvent>[];
|
List<PointerEvent> dispatchedPointerEvents = <PointerEvent>[];
|
||||||
|
|
||||||
int _id;
|
int _id;
|
||||||
@ -59,7 +59,7 @@ class FakeAndroidViewController implements AndroidViewController {
|
|||||||
bool focusCleared = false;
|
bool focusCleared = false;
|
||||||
bool created = false;
|
bool created = false;
|
||||||
|
|
||||||
/// Events that are dispatched;
|
/// Events that are dispatched.
|
||||||
List<PointerEvent> dispatchedPointerEvents = <PointerEvent>[];
|
List<PointerEvent> dispatchedPointerEvents = <PointerEvent>[];
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -449,7 +449,7 @@ class GetSemanticsIdResult extends Result {
|
|||||||
/// Creates a new [GetSemanticsId] result.
|
/// Creates a new [GetSemanticsId] result.
|
||||||
const GetSemanticsIdResult(this.id);
|
const GetSemanticsIdResult(this.id);
|
||||||
|
|
||||||
/// The semantics id of the node;
|
/// The semantics id of the node.
|
||||||
final int id;
|
final int id;
|
||||||
|
|
||||||
/// Deserializes this result from JSON.
|
/// Deserializes this result from JSON.
|
||||||
|
@ -59,7 +59,7 @@ class Scroll extends CommandWithTarget {
|
|||||||
/// Delta Y offset per move event.
|
/// Delta Y offset per move event.
|
||||||
final double dy;
|
final double dy;
|
||||||
|
|
||||||
/// The duration of the scrolling action
|
/// The duration of the scrolling action.
|
||||||
final Duration duration;
|
final Duration duration;
|
||||||
|
|
||||||
/// The frequency in Hz of the generated move events.
|
/// The frequency in Hz of the generated move events.
|
||||||
|
@ -160,10 +160,10 @@ abstract class FlutterDriver {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Getter of appIsolate
|
/// Getter of appIsolate.
|
||||||
VMIsolate get appIsolate => throw UnimplementedError();
|
VMIsolate get appIsolate => throw UnimplementedError();
|
||||||
|
|
||||||
/// Getter of serviceClient
|
/// Getter of serviceClient.
|
||||||
VMServiceClient get serviceClient => throw UnimplementedError();
|
VMServiceClient get serviceClient => throw UnimplementedError();
|
||||||
|
|
||||||
/// Sends [command] to the Flutter Driver extensions.
|
/// Sends [command] to the Flutter Driver extensions.
|
||||||
|
@ -266,7 +266,7 @@ class VMServiceFlutterDriver extends FlutterDriver {
|
|||||||
/// The unique ID of this driver instance.
|
/// The unique ID of this driver instance.
|
||||||
final int _driverId;
|
final int _driverId;
|
||||||
|
|
||||||
/// Client connected to the Dart VM running the Flutter application
|
/// Client connected to the Dart VM running the Flutter application.
|
||||||
///
|
///
|
||||||
/// You can use [VMServiceClient] to check VM version, flags and get
|
/// You can use [VMServiceClient] to check VM version, flags and get
|
||||||
/// notified when a new isolate has been instantiated. That could be
|
/// notified when a new isolate has been instantiated. That could be
|
||||||
|
@ -31,7 +31,7 @@ class WebFlutterDriver extends FlutterDriver {
|
|||||||
final FlutterWebConnection _connection;
|
final FlutterWebConnection _connection;
|
||||||
DateTime _startTime;
|
DateTime _startTime;
|
||||||
|
|
||||||
/// Start time for tracing
|
/// Start time for tracing.
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
DateTime get startTime => _startTime;
|
DateTime get startTime => _startTime;
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ class WebFlutterDriver extends FlutterDriver {
|
|||||||
_startTime = DateTime.now();
|
_startTime = DateTime.now();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Checks whether browser supports Timeline related operations
|
/// Checks whether browser supports Timeline related operations.
|
||||||
void _checkBrowserSupportsTimeline() {
|
void _checkBrowserSupportsTimeline() {
|
||||||
if (!_connection.supportsTimelineAction) {
|
if (!_connection.supportsTimelineAction) {
|
||||||
throw UnsupportedError('Timeline action is not supported by current testing browser');
|
throw UnsupportedError('Timeline action is not supported by current testing browser');
|
||||||
@ -163,12 +163,12 @@ class WebFlutterDriver extends FlutterDriver {
|
|||||||
/// Encapsulates connection information to an instance of a Flutter Web application.
|
/// Encapsulates connection information to an instance of a Flutter Web application.
|
||||||
class FlutterWebConnection {
|
class FlutterWebConnection {
|
||||||
/// Creates a FlutterWebConnection with WebDriver
|
/// Creates a FlutterWebConnection with WebDriver
|
||||||
/// and whether the WebDriver supports timeline action
|
/// and whether the WebDriver supports timeline action.
|
||||||
FlutterWebConnection(this._driver, this.supportsTimelineAction);
|
FlutterWebConnection(this._driver, this.supportsTimelineAction);
|
||||||
|
|
||||||
final async_io.WebDriver _driver;
|
final async_io.WebDriver _driver;
|
||||||
|
|
||||||
/// Whether the connected WebDriver supports timeline action for Flutter Web Driver
|
/// Whether the connected WebDriver supports timeline action for Flutter Web Driver.
|
||||||
bool supportsTimelineAction;
|
bool supportsTimelineAction;
|
||||||
|
|
||||||
/// Starts WebDriver with the given [settings] and
|
/// Starts WebDriver with the given [settings] and
|
||||||
@ -196,7 +196,7 @@ class FlutterWebConnection {
|
|||||||
return FlutterWebConnection(driver, settings['support-timeline-action'] as bool);
|
return FlutterWebConnection(driver, settings['support-timeline-action'] as bool);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sends command via WebDriver to Flutter web application
|
/// Sends command via WebDriver to Flutter web application.
|
||||||
Future<dynamic> sendCommand(String script, Duration duration) async {
|
Future<dynamic> sendCommand(String script, Duration duration) async {
|
||||||
dynamic result;
|
dynamic result;
|
||||||
try {
|
try {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
/// Localizations for the Flutter library
|
/// Localizations for the Flutter library.
|
||||||
library flutter_localizations;
|
library flutter_localizations;
|
||||||
|
|
||||||
export 'src/cupertino_localizations.dart';
|
export 'src/cupertino_localizations.dart';
|
||||||
|
@ -855,6 +855,7 @@ Map<String, String> parseAdbDeviceProperties(String str) {
|
|||||||
///
|
///
|
||||||
/// Example output:
|
/// Example output:
|
||||||
///
|
///
|
||||||
|
/// ```
|
||||||
/// Applications Memory Usage (in Kilobytes):
|
/// Applications Memory Usage (in Kilobytes):
|
||||||
/// Uptime: 441088659 Realtime: 521464097
|
/// Uptime: 441088659 Realtime: 521464097
|
||||||
///
|
///
|
||||||
@ -906,6 +907,7 @@ Map<String, String> parseAdbDeviceProperties(String str) {
|
|||||||
/// MEMORY_USED: 0
|
/// MEMORY_USED: 0
|
||||||
/// PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
|
/// PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
|
||||||
/// ...
|
/// ...
|
||||||
|
/// ```
|
||||||
///
|
///
|
||||||
/// For more information, see https://developer.android.com/studio/command-line/dumpsys.
|
/// For more information, see https://developer.android.com/studio/command-line/dumpsys.
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
|
@ -18,7 +18,7 @@ import 'android_device.dart';
|
|||||||
import 'android_sdk.dart';
|
import 'android_sdk.dart';
|
||||||
import 'android_workflow.dart' hide androidWorkflow;
|
import 'android_workflow.dart' hide androidWorkflow;
|
||||||
|
|
||||||
/// Device discovery for Android physical devices and emulators.s
|
/// Device discovery for Android physical devices and emulators.
|
||||||
class AndroidDevices extends PollingDeviceDiscovery {
|
class AndroidDevices extends PollingDeviceDiscovery {
|
||||||
AndroidDevices({
|
AndroidDevices({
|
||||||
@required AndroidWorkflow androidWorkflow,
|
@required AndroidWorkflow androidWorkflow,
|
||||||
|
@ -872,7 +872,7 @@ Iterable<String> findApkFilesModule(
|
|||||||
/// Returns the APK files for a given [FlutterProject] and [AndroidBuildInfo].
|
/// Returns the APK files for a given [FlutterProject] and [AndroidBuildInfo].
|
||||||
///
|
///
|
||||||
/// The flutter.gradle plugin will copy APK outputs into:
|
/// The flutter.gradle plugin will copy APK outputs into:
|
||||||
/// $buildDir/app/outputs/flutter-apk/app-<abi>-<flavor-flag>-<build-mode-flag>.apk
|
/// `$buildDir/app/outputs/flutter-apk/app-<abi>-<flavor-flag>-<build-mode-flag>.apk`
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
Iterable<String> listApkPaths(
|
Iterable<String> listApkPaths(
|
||||||
AndroidBuildInfo androidBuildInfo,
|
AndroidBuildInfo androidBuildInfo,
|
||||||
|
@ -262,7 +262,7 @@ class AndroidApk extends ApplicationPackage {
|
|||||||
String get name => file.basename;
|
String get name => file.basename;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Tests whether a [Directory] is an iOS bundle directory
|
/// Tests whether a [Directory] is an iOS bundle directory.
|
||||||
bool _isBundleDirectory(Directory dir) => dir.path.endsWith('.app');
|
bool _isBundleDirectory(Directory dir) => dir.path.endsWith('.app');
|
||||||
|
|
||||||
abstract class IOSApp extends ApplicationPackage {
|
abstract class IOSApp extends ApplicationPackage {
|
||||||
|
@ -67,7 +67,7 @@ enum Artifact {
|
|||||||
windowsDesktopPath,
|
windowsDesktopPath,
|
||||||
/// The root of the cpp client code for Windows desktop.
|
/// The root of the cpp client code for Windows desktop.
|
||||||
windowsCppClientWrapper,
|
windowsCppClientWrapper,
|
||||||
/// The root of the sky_engine package
|
/// The root of the sky_engine package.
|
||||||
skyEnginePath,
|
skyEnginePath,
|
||||||
/// The location of the macOS engine podspec file.
|
/// The location of the macOS engine podspec file.
|
||||||
flutterMacOSPodspec,
|
flutterMacOSPodspec,
|
||||||
|
@ -65,7 +65,7 @@ class _ManifestAssetBundleFactory implements AssetBundleFactory {
|
|||||||
AssetBundle createBundle() => ManifestAssetBundle();
|
AssetBundle createBundle() => ManifestAssetBundle();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An asset bundle based on a pubspec.yaml
|
/// An asset bundle based on a pubspec.yaml file.
|
||||||
class ManifestAssetBundle implements AssetBundle {
|
class ManifestAssetBundle implements AssetBundle {
|
||||||
/// Constructs an [ManifestAssetBundle] that gathers the set of assets from the
|
/// Constructs an [ManifestAssetBundle] that gathers the set of assets from the
|
||||||
/// pubspec.yaml manifest.
|
/// pubspec.yaml manifest.
|
||||||
@ -652,12 +652,13 @@ class _AssetDirectoryCache {
|
|||||||
///
|
///
|
||||||
/// Given package: 'test_package' and an assets directory like this:
|
/// Given package: 'test_package' and an assets directory like this:
|
||||||
///
|
///
|
||||||
/// assets/foo
|
/// - assets/foo
|
||||||
/// assets/var1/foo
|
/// - assets/var1/foo
|
||||||
/// assets/var2/foo
|
/// - assets/var2/foo
|
||||||
/// assets/bar
|
/// - assets/bar
|
||||||
///
|
///
|
||||||
/// returns
|
/// This will return:
|
||||||
|
/// ```
|
||||||
/// {
|
/// {
|
||||||
/// asset: packages/test_package/assets/foo: [
|
/// asset: packages/test_package/assets/foo: [
|
||||||
/// asset: packages/test_package/assets/foo,
|
/// asset: packages/test_package/assets/foo,
|
||||||
@ -668,7 +669,7 @@ class _AssetDirectoryCache {
|
|||||||
/// asset: packages/test_package/assets/bar,
|
/// asset: packages/test_package/assets/bar,
|
||||||
/// ],
|
/// ],
|
||||||
/// }
|
/// }
|
||||||
///
|
/// ```
|
||||||
|
|
||||||
Map<_Asset, List<_Asset>> _parseAssets(
|
Map<_Asset, List<_Asset>> _parseAssets(
|
||||||
PackageConfig packageConfig,
|
PackageConfig packageConfig,
|
||||||
|
@ -230,11 +230,11 @@ class CommandHelpOption {
|
|||||||
|
|
||||||
final OutputPreferences _outputPreferences;
|
final OutputPreferences _outputPreferences;
|
||||||
|
|
||||||
/// The key associated with this command
|
/// The key associated with this command.
|
||||||
final String key;
|
final String key;
|
||||||
/// A description of what this command does
|
/// A description of what this command does.
|
||||||
final String description;
|
final String description;
|
||||||
/// Text shown in parenthesis to give the context
|
/// Text shown in parenthesis to give the context.
|
||||||
final String inParenthesis;
|
final String inParenthesis;
|
||||||
|
|
||||||
bool get _hasTextInParenthesis => inParenthesis != null && inParenthesis.isNotEmpty;
|
bool get _hasTextInParenthesis => inParenthesis != null && inParenthesis.isNotEmpty;
|
||||||
|
@ -9,7 +9,7 @@ bool isRunningFromDaemon = false;
|
|||||||
/// Throw a specialized exception for expected situations
|
/// Throw a specialized exception for expected situations
|
||||||
/// where the tool should exit with a clear message to the user
|
/// where the tool should exit with a clear message to the user
|
||||||
/// and no stack trace unless the --verbose option is specified.
|
/// and no stack trace unless the --verbose option is specified.
|
||||||
/// For example: network errors
|
/// For example: network errors.
|
||||||
void throwToolExit(String message, { int exitCode }) {
|
void throwToolExit(String message, { int exitCode }) {
|
||||||
throw ToolExit(message, exitCode: exitCode);
|
throw ToolExit(message, exitCode: exitCode);
|
||||||
}
|
}
|
||||||
@ -17,7 +17,7 @@ void throwToolExit(String message, { int exitCode }) {
|
|||||||
/// Specialized exception for expected situations
|
/// Specialized exception for expected situations
|
||||||
/// where the tool should exit with a clear message to the user
|
/// where the tool should exit with a clear message to the user
|
||||||
/// and no stack trace unless the --verbose option is specified.
|
/// and no stack trace unless the --verbose option is specified.
|
||||||
/// For example: network errors
|
/// For example: network errors.
|
||||||
class ToolExit implements Exception {
|
class ToolExit implements Exception {
|
||||||
ToolExit(this.message, { this.exitCode });
|
ToolExit(this.message, { this.exitCode });
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ class FileSystemUtils {
|
|||||||
&& referenceFile.statSync().modified.isAfter(entity.statSync().modified);
|
&& referenceFile.statSync().modified.isAfter(entity.statSync().modified);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the absolute path of the user's home directory
|
/// Return the absolute path of the user's home directory.
|
||||||
String get homeDirPath {
|
String get homeDirPath {
|
||||||
String path = _platform.isWindows
|
String path = _platform.isWindows
|
||||||
? _platform.environment['USERPROFILE']
|
? _platform.environment['USERPROFILE']
|
||||||
|
@ -182,7 +182,7 @@ final RegExp _escapeExpr = RegExp(r'\\(.)');
|
|||||||
///
|
///
|
||||||
/// Snapshot dependency files are a single line mapping the output snapshot to a
|
/// Snapshot dependency files are a single line mapping the output snapshot to a
|
||||||
/// space-separated list of input files used to generate that output. Spaces and
|
/// space-separated list of input files used to generate that output. Spaces and
|
||||||
/// backslashes are escaped with a backslash. e.g,
|
/// backslashes are escaped with a backslash. For example:
|
||||||
///
|
///
|
||||||
/// outfile : file1.dart fil\\e2.dart fil\ e3.dart
|
/// outfile : file1.dart fil\\e2.dart fil\ e3.dart
|
||||||
///
|
///
|
||||||
|
@ -43,7 +43,7 @@ abstract class Platform {
|
|||||||
/// True if the operating system is iOS.
|
/// True if the operating system is iOS.
|
||||||
bool get isIOS => operatingSystem == 'ios';
|
bool get isIOS => operatingSystem == 'ios';
|
||||||
|
|
||||||
/// True if the operating system is Fuchsia
|
/// True if the operating system is Fuchsia.
|
||||||
bool get isFuchsia => operatingSystem == 'fuchsia';
|
bool get isFuchsia => operatingSystem == 'fuchsia';
|
||||||
|
|
||||||
/// The environment for this process.
|
/// The environment for this process.
|
||||||
|
@ -11,7 +11,7 @@ import 'io.dart';
|
|||||||
|
|
||||||
typedef SignalHandler = FutureOr<void> Function(ProcessSignal signal);
|
typedef SignalHandler = FutureOr<void> Function(ProcessSignal signal);
|
||||||
|
|
||||||
/// A class that manages signal handlers
|
/// A class that manages signal handlers.
|
||||||
///
|
///
|
||||||
/// Signal handlers are run in the order that they were added.
|
/// Signal handlers are run in the order that they were added.
|
||||||
abstract class Signals {
|
abstract class Signals {
|
||||||
|
@ -82,7 +82,7 @@ class BuildInfo {
|
|||||||
/// A "x.y.z" string used as the version number shown to users.
|
/// A "x.y.z" string used as the version number shown to users.
|
||||||
/// For each new version of your app, you will provide a version number to differentiate it from previous versions.
|
/// For each new version of your app, you will provide a version number to differentiate it from previous versions.
|
||||||
/// On Android it is used as versionName.
|
/// On Android it is used as versionName.
|
||||||
/// On Xcode builds it is used as CFBundleShortVersionString,
|
/// On Xcode builds it is used as CFBundleShortVersionString.
|
||||||
final String buildName;
|
final String buildName;
|
||||||
|
|
||||||
/// An optional directory path to save debugging information from dwarf stack
|
/// An optional directory path to save debugging information from dwarf stack
|
||||||
@ -93,7 +93,7 @@ class BuildInfo {
|
|||||||
/// Whether to apply dart source code obfuscation.
|
/// Whether to apply dart source code obfuscation.
|
||||||
final bool dartObfuscation;
|
final bool dartObfuscation;
|
||||||
|
|
||||||
/// An optional path to a JSON containing object SkSL shaders
|
/// An optional path to a JSON containing object SkSL shaders.
|
||||||
///
|
///
|
||||||
/// Currently this is only supported for Android builds.
|
/// Currently this is only supported for Android builds.
|
||||||
final String bundleSkSLPath;
|
final String bundleSkSLPath;
|
||||||
|
@ -60,9 +60,9 @@ const String _kDefaultIndex = '''
|
|||||||
</html>
|
</html>
|
||||||
''';
|
''';
|
||||||
|
|
||||||
/// An expression compiler connecting to FrontendServer
|
/// An expression compiler connecting to FrontendServer.
|
||||||
///
|
///
|
||||||
/// This is only used in development mode
|
/// This is only used in development mode.
|
||||||
class WebExpressionCompiler implements ExpressionCompiler {
|
class WebExpressionCompiler implements ExpressionCompiler {
|
||||||
WebExpressionCompiler(this._generator);
|
WebExpressionCompiler(this._generator);
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ abstract class Target {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Invoke to remove the stamp file if the [buildAction] threw an exception;
|
/// Invoke to remove the stamp file if the [buildAction] threw an exception.
|
||||||
void clearStamp(Environment environment) {
|
void clearStamp(Environment environment) {
|
||||||
final File stamp = _findStampFile(environment);
|
final File stamp = _findStampFile(environment);
|
||||||
if (stamp.existsSync()) {
|
if (stamp.existsSync()) {
|
||||||
@ -260,18 +260,22 @@ abstract class Target {
|
|||||||
///
|
///
|
||||||
/// Use the environment to determine where to write an output file.
|
/// Use the environment to determine where to write an output file.
|
||||||
///
|
///
|
||||||
|
/// ```dart
|
||||||
/// environment.buildDir.childFile('output')
|
/// environment.buildDir.childFile('output')
|
||||||
/// ..createSync()
|
/// ..createSync()
|
||||||
/// ..writeAsStringSync('output data');
|
/// ..writeAsStringSync('output data');
|
||||||
|
/// ```
|
||||||
///
|
///
|
||||||
/// Example (Bad):
|
/// Example (Bad):
|
||||||
///
|
///
|
||||||
/// Use a hard-coded path or directory relative to the current working
|
/// Use a hard-coded path or directory relative to the current working
|
||||||
/// directory to write an output file.
|
/// directory to write an output file.
|
||||||
///
|
///
|
||||||
|
/// ```dart
|
||||||
/// globals.fs.file('build/linux/out')
|
/// globals.fs.file('build/linux/out')
|
||||||
/// ..createSync()
|
/// ..createSync()
|
||||||
/// ..writeAsStringSync('output data');
|
/// ..writeAsStringSync('output data');
|
||||||
|
/// ```
|
||||||
///
|
///
|
||||||
/// Example (Good):
|
/// Example (Good):
|
||||||
///
|
///
|
||||||
@ -279,6 +283,7 @@ abstract class Target {
|
|||||||
/// is still responsible for outputting a different file, as defined by the
|
/// is still responsible for outputting a different file, as defined by the
|
||||||
/// corresponding output [Source].
|
/// corresponding output [Source].
|
||||||
///
|
///
|
||||||
|
/// ```dart
|
||||||
/// final BuildMode buildMode = getBuildModeFromDefines(environment.defines);
|
/// final BuildMode buildMode = getBuildModeFromDefines(environment.defines);
|
||||||
/// if (buildMode == BuildMode.debug) {
|
/// if (buildMode == BuildMode.debug) {
|
||||||
/// environment.buildDir.childFile('debug.output')
|
/// environment.buildDir.childFile('debug.output')
|
||||||
@ -289,6 +294,7 @@ abstract class Target {
|
|||||||
/// ..createSync()
|
/// ..createSync()
|
||||||
/// ..writeAsStringSync('non_debug');
|
/// ..writeAsStringSync('non_debug');
|
||||||
/// }
|
/// }
|
||||||
|
/// ```
|
||||||
class Environment {
|
class Environment {
|
||||||
/// Create a new [Environment] object.
|
/// Create a new [Environment] object.
|
||||||
///
|
///
|
||||||
|
@ -179,7 +179,7 @@ class LocalizationOptions {
|
|||||||
|
|
||||||
/// The `--header` argument.
|
/// The `--header` argument.
|
||||||
///
|
///
|
||||||
/// The header to prepend to the generated Dart localizations
|
/// The header to prepend to the generated Dart localizations.
|
||||||
final String header;
|
final String header;
|
||||||
|
|
||||||
/// The `--output-class` argument.
|
/// The `--output-class` argument.
|
||||||
|
@ -221,7 +221,7 @@ class Dart2JSTarget extends Target {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Unpacks the dart2js compilation and resources to a given output directory
|
/// Unpacks the dart2js compilation and resources to a given output directory.
|
||||||
class WebReleaseBundle extends Target {
|
class WebReleaseBundle extends Target {
|
||||||
const WebReleaseBundle();
|
const WebReleaseBundle();
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ class DevelopmentArtifact {
|
|||||||
|
|
||||||
/// The name of the artifact.
|
/// The name of the artifact.
|
||||||
///
|
///
|
||||||
/// This should match the flag name in precache.dart
|
/// This should match the flag name in precache.dart.
|
||||||
final String name;
|
final String name;
|
||||||
|
|
||||||
/// A feature to control the visibility of this artifact.
|
/// A feature to control the visibility of this artifact.
|
||||||
|
@ -541,7 +541,7 @@ Future<bool> _stopApp(DriveCommand command) async {
|
|||||||
return stopped;
|
return stopped;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A list of supported browsers
|
/// A list of supported browsers.
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
enum Browser {
|
enum Browser {
|
||||||
/// Chrome on Android: https://developer.chrome.com/multidevice/android/overview
|
/// Chrome on Android: https://developer.chrome.com/multidevice/android/overview
|
||||||
|
@ -72,13 +72,13 @@ class TargetModel {
|
|||||||
|
|
||||||
const TargetModel._(this._value);
|
const TargetModel._(this._value);
|
||||||
|
|
||||||
/// The flutter patched dart SDK
|
/// The Flutter patched Dart SDK.
|
||||||
static const TargetModel flutter = TargetModel._('flutter');
|
static const TargetModel flutter = TargetModel._('flutter');
|
||||||
|
|
||||||
/// The fuchsia patched SDK.
|
/// The Fuchsia patched SDK.
|
||||||
static const TargetModel flutterRunner = TargetModel._('flutter_runner');
|
static const TargetModel flutterRunner = TargetModel._('flutter_runner');
|
||||||
|
|
||||||
/// The Dart vm.
|
/// The Dart VM.
|
||||||
static const TargetModel vm = TargetModel._('vm');
|
static const TargetModel vm = TargetModel._('vm');
|
||||||
|
|
||||||
/// The development compiler for JavaScript.
|
/// The development compiler for JavaScript.
|
||||||
@ -488,7 +488,7 @@ abstract class ResidentCompiler {
|
|||||||
/// module object, for example:
|
/// module object, for example:
|
||||||
/// { 'dart':'dart_sdk', 'main': '/packages/hello_world_main.dart' }
|
/// { 'dart':'dart_sdk', 'main': '/packages/hello_world_main.dart' }
|
||||||
/// Returns a [CompilerOutput] including the name of the file containing the
|
/// Returns a [CompilerOutput] including the name of the file containing the
|
||||||
/// compilation result and a number of errors
|
/// compilation result and a number of errors.
|
||||||
Future<CompilerOutput> compileExpressionToJs(
|
Future<CompilerOutput> compileExpressionToJs(
|
||||||
String libraryUri,
|
String libraryUri,
|
||||||
int line,
|
int line,
|
||||||
|
@ -557,7 +557,7 @@ abstract class Device {
|
|||||||
String userIdentifier,
|
String userIdentifier,
|
||||||
});
|
});
|
||||||
|
|
||||||
/// Check if the device is supported by Flutter
|
/// Check if the device is supported by Flutter.
|
||||||
bool isSupported();
|
bool isSupported();
|
||||||
|
|
||||||
// String meant to be displayed to the user indicating if the device is
|
// String meant to be displayed to the user indicating if the device is
|
||||||
@ -734,7 +734,7 @@ abstract class Device {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Clean up resources allocated by device
|
/// Clean up resources allocated by device.
|
||||||
///
|
///
|
||||||
/// For example log readers or port forwarders.
|
/// For example log readers or port forwarders.
|
||||||
Future<void> dispose();
|
Future<void> dispose();
|
||||||
@ -861,7 +861,7 @@ class DebuggingOptions {
|
|||||||
/// The port the browser should use for its debugging protocol.
|
/// The port the browser should use for its debugging protocol.
|
||||||
final int webBrowserDebugPort;
|
final int webBrowserDebugPort;
|
||||||
|
|
||||||
/// Enable expression evaluation for web target
|
/// Enable expression evaluation for web target.
|
||||||
final bool webEnableExpressionEvaluation;
|
final bool webEnableExpressionEvaluation;
|
||||||
|
|
||||||
/// A file where the vmservice URL should be written after the application is started.
|
/// A file where the vmservice URL should be written after the application is started.
|
||||||
@ -925,7 +925,7 @@ abstract class DevicePortForwarder {
|
|||||||
/// Stops forwarding [forwardedPort].
|
/// Stops forwarding [forwardedPort].
|
||||||
Future<void> unforward(ForwardedPort forwardedPort);
|
Future<void> unforward(ForwardedPort forwardedPort);
|
||||||
|
|
||||||
/// Cleanup allocated resources, like forwardedPorts
|
/// Cleanup allocated resources, like [forwardedPorts].
|
||||||
Future<void> dispose();
|
Future<void> dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ class FlutterManifest {
|
|||||||
return FlutterManifest.createFromString(manifest, logger: logger);
|
return FlutterManifest.createFromString(manifest, logger: logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns null on missing or invalid manifest
|
/// Returns null on missing or invalid manifest.
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
static FlutterManifest createFromString(String manifest, { @required Logger logger }) {
|
static FlutterManifest createFromString(String manifest, { @required Logger logger }) {
|
||||||
return _createFromYaml(manifest != null ? loadYaml(manifest) : null, logger);
|
return _createFromYaml(manifest != null ? loadYaml(manifest) : null, logger);
|
||||||
|
@ -38,6 +38,7 @@ class FuchsiaDevFinder {
|
|||||||
|
|
||||||
/// Returns a list of attached devices as a list of strings with entries
|
/// Returns a list of attached devices as a list of strings with entries
|
||||||
/// formatted as follows:
|
/// formatted as follows:
|
||||||
|
///
|
||||||
/// 192.168.42.172 scare-cable-skip-joy
|
/// 192.168.42.172 scare-cable-skip-joy
|
||||||
Future<List<String>> list({ Duration timeout }) async {
|
Future<List<String>> list({ Duration timeout }) async {
|
||||||
if (_fuchsiaArtifacts.devFinder == null ||
|
if (_fuchsiaArtifacts.devFinder == null ||
|
||||||
|
@ -199,7 +199,7 @@ class FuchsiaPackageServer {
|
|||||||
String get url => Uri(scheme: 'http', host: _host, port: _port).toString();
|
String get url => Uri(scheme: 'http', host: _host, port: _port).toString();
|
||||||
|
|
||||||
/// The URL that is stripped of interface name if it is an ipv6 address,
|
/// The URL that is stripped of interface name if it is an ipv6 address,
|
||||||
/// which should be supplied to amber_ctl to configure access to host
|
/// which should be supplied to amber_ctl to configure access to host.
|
||||||
String get interfaceStrippedUrl => Uri(
|
String get interfaceStrippedUrl => Uri(
|
||||||
scheme: 'http',
|
scheme: 'http',
|
||||||
host: (isIPv6Address(_host.split('%').first)) ? '[${_host.split('%').first}]' : _host,
|
host: (isIPv6Address(_host.split('%').first)) ? '[${_host.split('%').first}]' : _host,
|
||||||
|
@ -49,6 +49,7 @@ class FuchsiaSdk {
|
|||||||
/// Returns any attached devices is a newline-denominated String.
|
/// Returns any attached devices is a newline-denominated String.
|
||||||
///
|
///
|
||||||
/// Example output:
|
/// Example output:
|
||||||
|
///
|
||||||
/// $ device-finder list -full
|
/// $ device-finder list -full
|
||||||
/// > 192.168.42.56 paper-pulp-bush-angel
|
/// > 192.168.42.56 paper-pulp-bush-angel
|
||||||
Future<String> listDevices({ Duration timeout }) async {
|
Future<String> listDevices({ Duration timeout }) async {
|
||||||
|
@ -191,5 +191,5 @@ PlistParser get plistParser => context.get<PlistParser>() ?? (
|
|||||||
));
|
));
|
||||||
PlistParser _plistInstance;
|
PlistParser _plistInstance;
|
||||||
|
|
||||||
/// The global template renderer
|
/// The global template renderer.
|
||||||
TemplateRenderer get templateRenderer => context.get<TemplateRenderer>();
|
TemplateRenderer get templateRenderer => context.get<TemplateRenderer>();
|
||||||
|
@ -866,11 +866,12 @@ int compareIosVersions(String v1, String v2) {
|
|||||||
/// Matches on device type given an identifier.
|
/// Matches on device type given an identifier.
|
||||||
///
|
///
|
||||||
/// Example device type identifiers:
|
/// Example device type identifiers:
|
||||||
/// ✓ com.apple.CoreSimulator.SimDeviceType.iPhone-5
|
///
|
||||||
/// ✓ com.apple.CoreSimulator.SimDeviceType.iPhone-6
|
/// - ✓ com.apple.CoreSimulator.SimDeviceType.iPhone-5
|
||||||
/// ✓ com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus
|
/// - ✓ com.apple.CoreSimulator.SimDeviceType.iPhone-6
|
||||||
/// ✗ com.apple.CoreSimulator.SimDeviceType.iPad-2
|
/// - ✓ com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus
|
||||||
/// ✗ com.apple.CoreSimulator.SimDeviceType.Apple-Watch-38mm
|
/// - ✗ com.apple.CoreSimulator.SimDeviceType.iPad-2
|
||||||
|
/// - ✗ com.apple.CoreSimulator.SimDeviceType.Apple-Watch-38mm
|
||||||
final RegExp _iosDeviceTypePattern =
|
final RegExp _iosDeviceTypePattern =
|
||||||
RegExp(r'com.apple.CoreSimulator.SimDeviceType.iPhone-(\d+)(.*)');
|
RegExp(r'com.apple.CoreSimulator.SimDeviceType.iPhone-(\d+)(.*)');
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ class _VersionInfo {
|
|||||||
Version number;
|
Version number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A validator that checks for Clang and Make build dependencies
|
/// A validator that checks for Clang and Make build dependencies.
|
||||||
class LinuxDoctorValidator extends DoctorValidator {
|
class LinuxDoctorValidator extends DoctorValidator {
|
||||||
LinuxDoctorValidator({
|
LinuxDoctorValidator({
|
||||||
@required ProcessManager processManager,
|
@required ProcessManager processManager,
|
||||||
|
@ -12,7 +12,7 @@ import '../globals.dart' as globals;
|
|||||||
import '../ios/plist_parser.dart';
|
import '../ios/plist_parser.dart';
|
||||||
import '../project.dart';
|
import '../project.dart';
|
||||||
|
|
||||||
/// Tests whether a [FileSystemEntity] is an macOS bundle directory
|
/// Tests whether a [FileSystemEntity] is an macOS bundle directory.
|
||||||
bool _isBundleDirectory(FileSystemEntity entity) =>
|
bool _isBundleDirectory(FileSystemEntity entity) =>
|
||||||
entity is Directory && entity.path.endsWith('.app');
|
entity is Directory && entity.path.endsWith('.app');
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ enum SdkType {
|
|||||||
///
|
///
|
||||||
/// Usage: xcrun [options] <tool name> ... arguments ...
|
/// Usage: xcrun [options] <tool name> ... arguments ...
|
||||||
/// ...
|
/// ...
|
||||||
/// --sdk <sdk name> find the tool for the given SDK name
|
/// --sdk <sdk name> find the tool for the given SDK name.
|
||||||
String getNameForSdk(SdkType sdk) {
|
String getNameForSdk(SdkType sdk) {
|
||||||
switch (sdk) {
|
switch (sdk) {
|
||||||
case SdkType.iPhone:
|
case SdkType.iPhone:
|
||||||
|
@ -176,6 +176,7 @@ class Plugin {
|
|||||||
/// Create a YamlMap that represents the supported platforms.
|
/// Create a YamlMap that represents the supported platforms.
|
||||||
///
|
///
|
||||||
/// For example, if the `platforms` contains 'ios' and 'android', the return map looks like:
|
/// For example, if the `platforms` contains 'ios' and 'android', the return map looks like:
|
||||||
|
///
|
||||||
/// android:
|
/// android:
|
||||||
/// package: io.flutter.plugins.sample
|
/// package: io.flutter.plugins.sample
|
||||||
/// pluginClass: SamplePlugin
|
/// pluginClass: SamplePlugin
|
||||||
|
@ -194,7 +194,7 @@ class FlutterProject {
|
|||||||
/// True if this project is a Flutter module project.
|
/// True if this project is a Flutter module project.
|
||||||
bool get isModule => manifest.isModule;
|
bool get isModule => manifest.isModule;
|
||||||
|
|
||||||
/// True if the Flutter project is using the AndroidX support library
|
/// True if the Flutter project is using the AndroidX support library.
|
||||||
bool get usesAndroidX => manifest.usesAndroidX;
|
bool get usesAndroidX => manifest.usesAndroidX;
|
||||||
|
|
||||||
/// True if this project has an example application.
|
/// True if this project has an example application.
|
||||||
@ -709,7 +709,7 @@ class AndroidProject extends FlutterProjectPlatform {
|
|||||||
/// True if the parent Flutter project is a module.
|
/// True if the parent Flutter project is a module.
|
||||||
bool get isModule => parent.isModule;
|
bool get isModule => parent.isModule;
|
||||||
|
|
||||||
/// True if the Flutter project is using the AndroidX support library
|
/// True if the Flutter project is using the AndroidX support library.
|
||||||
bool get usesAndroidX => parent.usesAndroidX;
|
bool get usesAndroidX => parent.usesAndroidX;
|
||||||
|
|
||||||
/// True, if the app project is using Kotlin.
|
/// True, if the app project is using Kotlin.
|
||||||
@ -989,7 +989,7 @@ class MacOSProject extends FlutterProjectPlatform implements XcodeBasedProject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The Windows sub project
|
/// The Windows sub project.
|
||||||
class WindowsProject extends FlutterProjectPlatform implements CmakeBasedProject {
|
class WindowsProject extends FlutterProjectPlatform implements CmakeBasedProject {
|
||||||
WindowsProject._(this.parent);
|
WindowsProject._(this.parent);
|
||||||
|
|
||||||
@ -1075,7 +1075,7 @@ class LinuxProject extends FlutterProjectPlatform implements CmakeBasedProject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The Fuchsia sub project
|
/// The Fuchsia sub project.
|
||||||
class FuchsiaProject {
|
class FuchsiaProject {
|
||||||
FuchsiaProject._(this.project);
|
FuchsiaProject._(this.project);
|
||||||
|
|
||||||
|
@ -1707,7 +1707,7 @@ class DebugConnectionInfo {
|
|||||||
/// Returns the next platform value for the switcher.
|
/// Returns the next platform value for the switcher.
|
||||||
///
|
///
|
||||||
/// These values must match what is available in
|
/// These values must match what is available in
|
||||||
/// packages/flutter/lib/src/foundation/binding.dart
|
/// `packages/flutter/lib/src/foundation/binding.dart`.
|
||||||
String nextPlatform(String currentPlatform, FeatureFlags featureFlags) {
|
String nextPlatform(String currentPlatform, FeatureFlags featureFlags) {
|
||||||
switch (currentPlatform) {
|
switch (currentPlatform) {
|
||||||
case 'android':
|
case 'android':
|
||||||
|
@ -699,7 +699,7 @@ String _shortGitRevision(String revision) {
|
|||||||
return revision.length > 10 ? revision.substring(0, 10) : revision;
|
return revision.length > 10 ? revision.substring(0, 10) : revision;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Version of Flutter SDK parsed from git
|
/// Version of Flutter SDK parsed from Git.
|
||||||
class GitTagVersion {
|
class GitTagVersion {
|
||||||
const GitTagVersion({
|
const GitTagVersion({
|
||||||
this.x,
|
this.x,
|
||||||
@ -732,7 +732,7 @@ class GitTagVersion {
|
|||||||
/// The Z in vX.Y.Z.
|
/// The Z in vX.Y.Z.
|
||||||
final int z;
|
final int z;
|
||||||
|
|
||||||
/// the F in vX.Y.Z+hotfix.F
|
/// the F in vX.Y.Z+hotfix.F.
|
||||||
final int hotfix;
|
final int hotfix;
|
||||||
|
|
||||||
/// Number of commits since the vX.Y.Z tag.
|
/// Number of commits since the vX.Y.Z tag.
|
||||||
@ -741,10 +741,10 @@ class GitTagVersion {
|
|||||||
/// The git hash (or an abbreviation thereof) for this commit.
|
/// The git hash (or an abbreviation thereof) for this commit.
|
||||||
final String hash;
|
final String hash;
|
||||||
|
|
||||||
/// The N in X.Y.Z-dev.N.M
|
/// The N in X.Y.Z-dev.N.M.
|
||||||
final int devVersion;
|
final int devVersion;
|
||||||
|
|
||||||
/// The M in X.Y.Z-dev.N.M
|
/// The M in X.Y.Z-dev.N.M.
|
||||||
final int devPatch;
|
final int devPatch;
|
||||||
|
|
||||||
/// The git tag that is this version's closest ancestor.
|
/// The git tag that is this version's closest ancestor.
|
||||||
|
@ -811,7 +811,7 @@ extension FlutterVmService on vm_service.VmService {
|
|||||||
return callServiceExtension(kScreenshotSkpMethod);
|
return callServiceExtension(kScreenshotSkpMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set the VM timeline flags
|
/// Set the VM timeline flags.
|
||||||
Future<vm_service.Response> setVMTimelineFlags(List<String> recordedStreams) {
|
Future<vm_service.Response> setVMTimelineFlags(List<String> recordedStreams) {
|
||||||
assert(recordedStreams != null);
|
assert(recordedStreams != null);
|
||||||
return callServiceExtension(
|
return callServiceExtension(
|
||||||
|
@ -103,7 +103,7 @@ class VisualStudio {
|
|||||||
/// Returns the highest installed Windows 10 SDK version, or null if none is
|
/// Returns the highest installed Windows 10 SDK version, or null if none is
|
||||||
/// found.
|
/// found.
|
||||||
///
|
///
|
||||||
/// For instance: 10.0.18362.0
|
/// For instance: 10.0.18362.0.
|
||||||
String getWindows10SDKVersion() {
|
String getWindows10SDKVersion() {
|
||||||
final String sdkLocation = _getWindows10SdkLocation();
|
final String sdkLocation = _getWindows10SdkLocation();
|
||||||
if (sdkLocation == null) {
|
if (sdkLocation == null) {
|
||||||
|
@ -13,8 +13,8 @@ import 'test_driver.dart';
|
|||||||
import 'test_utils.dart';
|
import 'test_utils.dart';
|
||||||
|
|
||||||
/// This duration is arbitrary but is ideally:
|
/// This duration is arbitrary but is ideally:
|
||||||
/// a) long enough to ensure that if the app is crashing at startup, we notice
|
/// a) Long enough to ensure that if the app is crashing at startup, we notice.
|
||||||
/// b) as short as possible, to avoid inflating build times
|
/// b) As short as possible, to avoid inflating build times.
|
||||||
const Duration requiredLifespan = Duration(seconds: 5);
|
const Duration requiredLifespan = Duration(seconds: 5);
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
@ -8,7 +8,7 @@ import 'package:path/path.dart' as path; // ignore: package_path_import
|
|||||||
import 'package:flutter_tools/src/convert.dart';
|
import 'package:flutter_tools/src/convert.dart';
|
||||||
import '../src/common.dart';
|
import '../src/common.dart';
|
||||||
|
|
||||||
/// Checks that all active template files are defined in the template_manifest.json
|
/// Checks that all active template files are defined in the template_manifest.json file.
|
||||||
void main() {
|
void main() {
|
||||||
test('Check template manifest is up to date', () {
|
test('Check template manifest is up to date', () {
|
||||||
final Map<String, Object> manifest = json.decode(
|
final Map<String, Object> manifest = json.decode(
|
||||||
|
@ -54,7 +54,7 @@ List<FakeDeviceJsonData> fakeDevices = <FakeDeviceJsonData>[
|
|||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
/// Fake device to test `devices` command
|
/// Fake device to test `devices` command.
|
||||||
class FakeDevice extends Device {
|
class FakeDevice extends Device {
|
||||||
FakeDevice(this.name, String id, [bool ephemeral = true, this._isSupported = true, PlatformType type = PlatformType.web]) : super(
|
FakeDevice(this.name, String id, [bool ephemeral = true, this._isSupported = true, PlatformType type = PlatformType.web]) : super(
|
||||||
id,
|
id,
|
||||||
@ -87,7 +87,7 @@ class FakeDevice extends Device {
|
|||||||
Future<String> sdkNameAndVersion = Future<String>.value('Test SDK (1.2.3)');
|
Future<String> sdkNameAndVersion = Future<String>.value('Test SDK (1.2.3)');
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Combines fake device with its canonical JSON representation
|
/// Combines fake device with its canonical JSON representation.
|
||||||
class FakeDeviceJsonData {
|
class FakeDeviceJsonData {
|
||||||
FakeDeviceJsonData(this.dev, this.json);
|
FakeDeviceJsonData(this.dev, this.json);
|
||||||
|
|
||||||
|
@ -622,7 +622,7 @@ void applyMocksToCommand(FlutterCommand command) {
|
|||||||
command.applicationPackages = MockApplicationPackageStore();
|
command.applicationPackages = MockApplicationPackageStore();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Common functionality for tracking mock interaction
|
/// Common functionality for tracking mock interaction.
|
||||||
class BasicMock {
|
class BasicMock {
|
||||||
final List<String> messages = <String>[];
|
final List<String> messages = <String>[];
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ final Map<Type, Generator> _testbedDefaults = <Type, Generator>{
|
|||||||
///
|
///
|
||||||
/// Example:
|
/// Example:
|
||||||
///
|
///
|
||||||
/// Testing that a filesystem operation works as expected
|
/// Testing that a filesystem operation works as expected:
|
||||||
///
|
///
|
||||||
/// void main() {
|
/// void main() {
|
||||||
/// group('Example', () {
|
/// group('Example', () {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user