From fabf4e3d0d311181178d2c601d29a2f739ea543a Mon Sep 17 00:00:00 2001 From: Greg Spencer Date: Wed, 8 Jan 2020 15:28:02 -0800 Subject: [PATCH] Reverse the sense of the terms snippet and sample. (#48254) --- dartdoc_options.yaml | 10 +- dev/bots/analyze-sample-code.dart | 100 +++++++++--------- .../known_broken_documentation.dart | 14 +-- dev/bots/test/analyze-sample-code_test.dart | 2 +- dev/snippets/README.md | 50 ++++----- dev/snippets/assets/code_sample.png | Bin 39037 -> 113476 bytes dev/snippets/assets/code_snippet.png | Bin 113476 -> 39037 bytes .../config/skeletons/application.html | 43 -------- ...d-application.html => dartpad-sample.html} | 0 dev/snippets/config/skeletons/sample.html | 26 ++++- dev/snippets/config/skeletons/snippet.html | 25 +++++ dev/snippets/lib/configuration.dart | 6 +- dev/snippets/lib/main.dart | 30 +++--- dev/snippets/lib/snippets.dart | 24 ++--- dev/snippets/test/configuration_test.dart | 12 +-- dev/snippets/test/snippets_test.dart | 14 +-- .../flutter/lib/src/animation/animation.dart | 6 +- .../src/animation/animation_controller.dart | 4 +- .../flutter/lib/src/animation/animations.dart | 4 +- .../flutter/lib/src/animation/curves.dart | 2 +- packages/flutter/lib/src/animation/tween.dart | 6 +- .../lib/src/animation/tween_sequence.dart | 4 +- packages/flutter/lib/src/cupertino/app.dart | 4 +- .../flutter/lib/src/cupertino/colors.dart | 6 +- .../lib/src/cupertino/context_menu.dart | 2 +- .../flutter/lib/src/cupertino/scrollbar.dart | 2 +- .../lib/src/cupertino/segmented_control.dart | 2 +- .../flutter/lib/src/cupertino/slider.dart | 4 +- .../cupertino/sliding_segmented_control.dart | 2 +- .../flutter/lib/src/cupertino/switch.dart | 2 +- .../lib/src/cupertino/tab_scaffold.dart | 4 +- .../flutter/lib/src/cupertino/text_field.dart | 2 +- .../lib/src/foundation/annotations.dart | 6 +- .../flutter/lib/src/foundation/binding.dart | 4 +- .../lib/src/foundation/diagnostics.dart | 12 +-- .../flutter/lib/src/foundation/licenses.dart | 2 +- .../lib/src/foundation/stack_frame.dart | 2 +- packages/flutter/lib/src/material/about.dart | 2 +- .../animated_icons/animated_icons.dart | 2 +- packages/flutter/lib/src/material/app.dart | 10 +- .../flutter/lib/src/material/app_bar.dart | 6 +- .../lib/src/material/bottom_app_bar.dart | 2 +- .../src/material/bottom_navigation_bar.dart | 2 +- .../lib/src/material/bottom_sheet.dart | 2 +- packages/flutter/lib/src/material/card.dart | 4 +- .../lib/src/material/checkbox_list_tile.dart | 6 +- packages/flutter/lib/src/material/chip.dart | 16 +-- .../flutter/lib/src/material/chip_theme.dart | 4 +- .../lib/src/material/circle_avatar.dart | 4 +- packages/flutter/lib/src/material/colors.dart | 74 ++++++------- .../flutter/lib/src/material/data_table.dart | 2 +- .../flutter/lib/src/material/date_picker.dart | 2 +- packages/flutter/lib/src/material/dialog.dart | 8 +- .../flutter/lib/src/material/divider.dart | 8 +- packages/flutter/lib/src/material/drawer.dart | 2 +- .../flutter/lib/src/material/dropdown.dart | 6 +- .../lib/src/material/expansion_panel.dart | 4 +- .../flutter/lib/src/material/feedback.dart | 4 +- .../flutter/lib/src/material/flat_button.dart | 4 +- .../lib/src/material/flexible_space_bar.dart | 2 +- .../src/material/floating_action_button.dart | 4 +- .../flutter/lib/src/material/icon_button.dart | 4 +- packages/flutter/lib/src/material/icons.dart | 2 +- .../lib/src/material/ink_decoration.dart | 4 +- .../flutter/lib/src/material/ink_well.dart | 2 +- .../lib/src/material/input_decorator.dart | 8 +- .../flutter/lib/src/material/list_tile.dart | 10 +- .../lib/src/material/material_state.dart | 4 +- .../flutter/lib/src/material/popup_menu.dart | 6 +- packages/flutter/lib/src/material/radio.dart | 2 +- .../lib/src/material/radio_list_tile.dart | 6 +- .../lib/src/material/raised_button.dart | 2 +- .../lib/src/material/range_slider.dart | 8 +- .../lib/src/material/reorderable_list.dart | 2 +- .../flutter/lib/src/material/scaffold.dart | 18 ++-- packages/flutter/lib/src/material/search.dart | 2 +- .../lib/src/material/selectable_text.dart | 4 +- packages/flutter/lib/src/material/slider.dart | 8 +- .../lib/src/material/slider_theme.dart | 4 +- .../flutter/lib/src/material/stepper.dart | 2 +- .../lib/src/material/switch_list_tile.dart | 6 +- .../lib/src/material/tab_controller.dart | 4 +- .../flutter/lib/src/material/text_field.dart | 4 +- .../lib/src/material/text_form_field.dart | 2 +- .../flutter/lib/src/material/text_theme.dart | 4 +- .../flutter/lib/src/material/theme_data.dart | 6 +- packages/flutter/lib/src/material/time.dart | 2 +- .../flutter/lib/src/material/time_picker.dart | 6 +- .../lib/src/material/tooltip_theme.dart | 2 +- .../flutter/lib/src/painting/borders.dart | 2 +- .../flutter/lib/src/painting/box_border.dart | 6 +- .../lib/src/painting/box_decoration.dart | 2 +- .../flutter/lib/src/painting/box_fit.dart | 2 +- .../painting/continuous_rectangle_border.dart | 2 +- .../flutter/lib/src/painting/edge_insets.dart | 14 +-- .../flutter/lib/src/painting/gradient.dart | 10 +- .../flutter/lib/src/painting/image_cache.dart | 2 +- .../lib/src/painting/image_provider.dart | 4 +- .../flutter/lib/src/painting/inline_span.dart | 2 +- .../lib/src/painting/shape_decoration.dart | 2 +- .../flutter/lib/src/painting/strut_style.dart | 8 +- .../flutter/lib/src/painting/text_span.dart | 4 +- .../flutter/lib/src/painting/text_style.dart | 24 ++--- .../lib/src/physics/gravity_simulation.dart | 2 +- .../flutter/lib/src/rendering/binding.dart | 6 +- packages/flutter/lib/src/rendering/box.dart | 2 +- .../lib/src/rendering/custom_layout.dart | 2 +- .../lib/src/rendering/custom_paint.dart | 2 +- .../rendering/debug_overflow_indicator.dart | 2 +- .../flutter/lib/src/rendering/object.dart | 2 +- .../flutter/lib/src/rendering/proxy_box.dart | 2 +- .../flutter/lib/src/semantics/semantics.dart | 2 +- .../lib/src/services/keyboard_key.dart | 8 +- .../lib/src/services/platform_channel.dart | 6 +- .../lib/src/services/system_chrome.dart | 4 +- packages/flutter/lib/src/widgets/actions.dart | 2 +- .../lib/src/widgets/animated_cross_fade.dart | 4 +- .../lib/src/widgets/animated_list.dart | 4 +- .../lib/src/widgets/animated_switcher.dart | 2 +- packages/flutter/lib/src/widgets/app.dart | 4 +- packages/flutter/lib/src/widgets/async.dart | 4 +- packages/flutter/lib/src/widgets/basic.dart | 66 ++++++------ packages/flutter/lib/src/widgets/binding.dart | 6 +- .../flutter/lib/src/widgets/container.dart | 6 +- .../widgets/draggable_scrollable_sheet.dart | 2 +- .../lib/src/widgets/editable_text.dart | 4 +- .../lib/src/widgets/fade_in_image.dart | 2 +- .../lib/src/widgets/focus_manager.dart | 2 +- .../flutter/lib/src/widgets/focus_scope.dart | 2 +- packages/flutter/lib/src/widgets/form.dart | 2 +- .../flutter/lib/src/widgets/framework.dart | 16 +-- .../lib/src/widgets/gesture_detector.dart | 6 +- packages/flutter/lib/src/widgets/icon.dart | 4 +- packages/flutter/lib/src/widgets/image.dart | 12 +-- .../lib/src/widgets/implicit_animations.dart | 6 +- .../lib/src/widgets/inherited_theme.dart | 2 +- .../lib/src/widgets/localizations.dart | 2 +- .../flutter/lib/src/widgets/media_query.dart | 2 +- .../flutter/lib/src/widgets/navigator.dart | 44 ++++---- .../lib/src/widgets/nested_scroll_view.dart | 2 +- .../flutter/lib/src/widgets/page_view.dart | 4 +- packages/flutter/lib/src/widgets/routes.dart | 4 +- .../lib/src/widgets/scroll_controller.dart | 2 +- .../lib/src/widgets/scroll_physics.dart | 2 +- .../flutter/lib/src/widgets/scroll_view.dart | 20 ++-- .../src/widgets/single_child_scroll_view.dart | 4 +- packages/flutter/lib/src/widgets/sliver.dart | 10 +- .../flutter/lib/src/widgets/sliver_fill.dart | 8 +- packages/flutter/lib/src/widgets/spacer.dart | 2 +- packages/flutter/lib/src/widgets/text.dart | 4 +- .../flutter/lib/src/widgets/transitions.dart | 8 +- .../src/widgets/tween_animation_builder.dart | 2 +- .../src/widgets/value_listenable_builder.dart | 2 +- .../flutter/lib/src/widgets/widget_span.dart | 2 +- packages/flutter_test/lib/src/matchers.dart | 2 +- .../flutter_test/lib/src/widget_tester.dart | 2 +- 156 files changed, 581 insertions(+), 581 deletions(-) delete mode 100644 dev/snippets/config/skeletons/application.html rename dev/snippets/config/skeletons/{dartpad-application.html => dartpad-sample.html} (100%) create mode 100644 dev/snippets/config/skeletons/snippet.html diff --git a/dartdoc_options.yaml b/dartdoc_options.yaml index 90c431695ae72..49db3df517f68 100644 --- a/dartdoc_options.yaml +++ b/dartdoc_options.yaml @@ -4,11 +4,11 @@ dartdoc: # The dev/tools/dartdoc.dart script does this automatically. tools: snippet: - command: ["dev/snippets/lib/main.dart", "--type=application"] - description: "Creates application sample code documentation output from embedded documentation samples." + command: ["dev/snippets/lib/main.dart", "--type=snippet"] + description: "Creates sample code documentation output from embedded documentation samples." sample: command: ["dev/snippets/lib/main.dart", "--type=sample"] - description: "Creates sample code documentation output from embedded documentation samples." + description: "Creates full application sample code documentation output from embedded documentation samples." dartpad: - command: ["dev/snippets/lib/main.dart", "--type=application", "--dartpad"] - description: "Creates sample code documentation output from embedded documentation samples and displays it in an embedded 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." diff --git a/dev/bots/analyze-sample-code.dart b/dev/bots/analyze-sample-code.dart index 2957f26ccf139..e0cfdf4998682 100644 --- a/dev/bots/analyze-sample-code.dart +++ b/dev/bots/analyze-sample-code.dart @@ -107,10 +107,10 @@ class SampleCheckerException implements Exception { /// error output from the analyzer is parsed for details, and the problem /// locations are translated back to the source location. /// -/// For snippets, the snippets are generated using the snippets tool, and they -/// are analyzed with the samples. If errors are found in snippets, then the -/// line number of the start of the snippet is given instead of the actual error -/// line, since snippets get reformatted when written, and the line numbers +/// For samples, the samples are generated using the snippets tool, and they +/// are analyzed with the snippets. If errors are found in samples, then the +/// line number of the start of the sample is given instead of the actual error +/// line, since samples get reformatted when written, and the line numbers /// don't necessarily match. It does, however, print the source of the /// problematic line. class SampleChecker { @@ -209,7 +209,7 @@ class SampleChecker { Map> errors = >{}; try { final Map sections = {}; - final Map snippets = {}; + final Map snippets = {}; _extractSamples(sections, snippets); errors = _analyze(_tempDirectory, sections, snippets); } finally { @@ -242,10 +242,10 @@ class SampleChecker { /// Creates a name for the snippets tool to use for the snippet ID from a /// filename and starting line number. String _createNameFromSource(String prefix, String filename, int start) { - String snippetId = path.split(filename).join('.'); - snippetId = path.basenameWithoutExtension(snippetId); - snippetId = '$prefix.$snippetId.$start'; - return snippetId; + String sampleId = path.split(filename).join('.'); + sampleId = path.basenameWithoutExtension(sampleId); + sampleId = '$prefix.$sampleId.$start'; + return sampleId; } // Precompiles the snippets tool if _snippetsSnapshotPath isn't set yet, and @@ -273,42 +273,42 @@ class SampleChecker { } } - /// Writes out the given [snippet] to an output file in the [_tempDirectory] and + /// Writes out the given sample to an output file in the [_tempDirectory] and /// returns the output file. - File _writeSnippet(Snippet snippet) { + File _writeSample(Sample sample) { // Generate the snippet. - final String snippetId = _createNameFromSource('snippet', snippet.start.filename, snippet.start.line); - final String inputName = '$snippetId.input'; + final String sampleId = _createNameFromSource('sample', sample.start.filename, sample.start.line); + final String inputName = '$sampleId.input'; // Now we have a filename like 'lib.src.material.foo_widget.123.dart' for each snippet. final File inputFile = File(path.join(_tempDirectory.path, inputName))..createSync(recursive: true); - inputFile.writeAsStringSync(snippet.input.join('\n')); - final File outputFile = File(path.join(_tempDirectory.path, '$snippetId.dart')); + inputFile.writeAsStringSync(sample.input.join('\n')); + final File outputFile = File(path.join(_tempDirectory.path, '$sampleId.dart')); final List args = [ '--output=${outputFile.absolute.path}', '--input=${inputFile.absolute.path}', - ...snippet.args, + ...sample.args, ]; if (verbose) - print('Generating snippet for ${snippet.start?.filename}:${snippet.start?.line}'); + print('Generating sample for ${sample.start?.filename}:${sample.start?.line}'); final ProcessResult process = _runSnippetsScript(args); if (verbose) stderr.write('${process.stderr}'); if (process.exitCode != 0) { throw SampleCheckerException( - 'Unable to create snippet for ${snippet.start.filename}:${snippet.start.line} ' + 'Unable to create sample for ${sample.start.filename}:${sample.start.line} ' '(using input from ${inputFile.path}):\n${process.stdout}\n${process.stderr}', - file: snippet.start.filename, - line: snippet.start.line, + file: sample.start.filename, + line: sample.start.line, ); } return outputFile; } /// Extracts the samples from the Dart files in [_flutterPackage], writes them - /// to disk, and adds them to the appropriate [sectionMap] or [snippetMap]. - void _extractSamples(Map sectionMap, Map snippetMap) { + /// to disk, and adds them to the appropriate [sectionMap] or [sampleMap]. + void _extractSamples(Map sectionMap, Map sampleMap) { final List
sections =
[]; - final List snippets = []; + final List samples = []; for (final File file in _listDartFiles(_flutterPackage, recursive: true)) { final String relativeFilePath = path.relative(file.path, from: _flutterPackage.path); @@ -334,12 +334,12 @@ class SampleChecker { throw SampleCheckerException('Snippet section unterminated.', file: relativeFilePath, line: lineNumber); } if (_dartDocSampleEndRegex.hasMatch(trimmedLine)) { - snippets.add( - Snippet( + samples.add( + Sample( start: startLine, input: block, args: snippetArgs, - serial: snippets.length, + serial: samples.length, ), ); snippetArgs = []; @@ -407,7 +407,7 @@ class SampleChecker { startLine = Line('', filename: relativeFilePath, line: lineNumber + 1, indent: 3); inPreamble = true; } else if (sampleMatch != null) { - inSnippet = sampleMatch != null && (sampleMatch[1] == 'snippet' || sampleMatch[1] == 'dartpad'); + inSnippet = sampleMatch != null && (sampleMatch[1] == 'sample' || sampleMatch[1] == 'dartpad'); if (inSnippet) { startLine = Line( '', @@ -425,7 +425,7 @@ class SampleChecker { inSampleSection = !inSnippet; } else if (RegExp(r'///\s*#+\s+[Ss]ample\s+[Cc]ode:?$').hasMatch(trimmedLine)) { throw SampleCheckerException( - "Found deprecated '## Sample code' section: use {@tool sample}...{@end-tool} instead.", + "Found deprecated '## Sample code' section: use {@tool snippet}...{@end-tool} instead.", file: relativeFilePath, line: lineNumber, ); @@ -437,10 +437,10 @@ class SampleChecker { for (final Section section in sections) { sectionMap[_writeSection(section).path] = section; } - for (final Snippet snippet in snippets) { - final File snippetFile = _writeSnippet(snippet); - snippet.contents = snippetFile.readAsLinesSync(); - snippetMap[snippetFile.absolute.path] = snippet; + for (final Sample sample in samples) { + final File snippetFile = _writeSample(sample); + sample.contents = snippetFile.readAsLinesSync(); + sampleMap[snippetFile.absolute.path] = sample; } } @@ -506,7 +506,7 @@ linter: /// Writes out a sample section to the disk and returns the file. File _writeSection(Section section) { - final String sectionId = _createNameFromSource('sample', section.start.filename, section.start.line); + final String sectionId = _createNameFromSource('snippet', section.start.filename, section.start.line); final File outputFile = File(path.join(_tempDirectory.path, '$sectionId.dart'))..createSync(recursive: true); final List mainContents = [ ...headers, @@ -520,7 +520,7 @@ linter: /// Invokes the analyzer on the given [directory] and returns the stdout. List _runAnalyzer(Directory directory) { - print('Starting analysis of samples.'); + print('Starting analysis of code samples.'); _createConfigurationFiles(directory); final ProcessResult result = Process.runSync( _flutter, @@ -556,7 +556,7 @@ linter: Map> _analyze( Directory directory, Map sections, - Map snippets, + Map samples, ) { final List errors = _runAnalyzer(directory); final Map> analysisErrors = >{}; @@ -587,7 +587,7 @@ linter: final String line = parts[4]; final String column = parts[5]; final String errorCode = parts[6]; - final int lineNumber = int.parse(line, radix: 10) - (isSample ? headerLength : 0); + final int lineNumber = int.parse(line, radix: 10) - (isSnippet ? headerLength : 0); final int columnNumber = int.parse(column, radix: 10); if (lineNumber < 0 && errorCode == 'unused_import') { // We don't care about unused imports. @@ -621,7 +621,7 @@ linter: // We don't really care if sample code isn't used! continue; } - if (isSnippet) { + if (isSample) { addAnalysisError( file, AnalysisError( @@ -630,7 +630,7 @@ linter: message, errorCode, null, - snippet: snippets[file.path], + sample: samples[file.path], ), ); } else { @@ -794,7 +794,7 @@ class Line { String toString() => '$filename:$line: $code'; } -/// A class to represent a section of sample code, marked by "{@tool sample}...{@end-tool}". +/// A class to represent a section of sample code, marked by "{@tool snippet}...{@end-tool}". class Section { const Section(this.code); factory Section.combine(List
sections) { @@ -841,12 +841,12 @@ class Section { final List code; } -/// A class to represent a snippet in the dartdoc comments, marked by -/// "{@tool snippet ...}...{@end-tool}". Snippets are processed separately from -/// regular samples, because they must be injected into templates in order to be +/// A class to represent a sample in the dartdoc comments, marked by +/// "{@tool sample ...}...{@end-tool}". Samples are processed separately from +/// regular snippets, because they must be injected into templates in order to be /// analyzed. -class Snippet { - Snippet({this.start, List input, List args, this.serial}) { +class Sample { + Sample({this.start, List input, List args, this.serial}) { this.input = input.toList(); this.args = args.toList(); } @@ -858,7 +858,7 @@ class Snippet { @override String toString() { - final StringBuffer buf = StringBuffer('snippet ${args.join(' ')}\n'); + final StringBuffer buf = StringBuffer('sample ${args.join(' ')}\n'); int count = start.line; for (final String line in input) { buf.writeln(' ${count.toString().padLeft(4, ' ')}: $line'); @@ -878,7 +878,7 @@ class AnalysisError { this.message, this.errorCode, this.source, { - this.snippet, + this.sample, }); final int line; @@ -886,15 +886,15 @@ class AnalysisError { final String message; final String errorCode; final Line source; - final Snippet snippet; + final Sample sample; @override String toString() { if (source != null) { return '${source.toStringWithColumn(column)}\n>>> $message ($errorCode)'; - } else if (snippet != null) { - return 'In snippet starting at ' - '${snippet.start.filename}:${snippet.start.line}:${snippet.contents[line - 1]}\n' + } else if (sample != null) { + return 'In sample starting at ' + '${sample.start.filename}:${sample.start.line}:${sample.contents[line - 1]}\n' '>>> $message ($errorCode)'; } else { return ':$line:$column\n>>> $message ($errorCode)'; diff --git a/dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart b/dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart index d15804d8a4c5a..93c0cabe636e8 100644 --- a/dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart +++ b/dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart @@ -22,7 +22,7 @@ /// blabla 0.0, the penzance blabla is blabla not blabla at all. Bla the blabla /// 1.0, the blabla is blabla blabla blabla an blabla blabla. /// -/// {@tool sample} +/// {@tool snippet} /// Bla blabla blabla some [Text] when the `_blabla` blabla blabla is true, and /// blabla it when it is blabla: /// @@ -54,7 +54,7 @@ /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// Bla blabla blabla some [Text] when the `_blabla` blabla blabla is true, and /// blabla finale blabla: /// @@ -66,7 +66,7 @@ /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// regular const constructor /// /// ```dart @@ -74,21 +74,21 @@ /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// const private constructor /// ```dart /// const _Text('Poor wandering ones!') /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// yet another const private constructor /// ```dart /// const _Text.__('Poor wandering ones!') /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// const variable /// /// ```dart @@ -96,7 +96,7 @@ /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// more const variables /// /// ```dart diff --git a/dev/bots/test/analyze-sample-code_test.dart b/dev/bots/test/analyze-sample-code_test.dart index b9d800a47bbf8..9fd35eb04176a 100644 --- a/dev/bots/test/analyze-sample-code_test.dart +++ b/dev/bots/test/analyze-sample-code_test.dart @@ -27,7 +27,7 @@ void main() { ]); expect(stdoutLines, [ 'Found 7 sample code sections.', - 'Starting analysis of samples.', + 'Starting analysis of code samples.', '', ]); }, skip: Platform.isWindows); diff --git a/dev/snippets/README.md b/dev/snippets/README.md index 87fe24ea0dea2..60687bc6ae769 100644 --- a/dev/snippets/README.md +++ b/dev/snippets/README.md @@ -9,8 +9,8 @@ in the source code into API documentation, as seen on https://api.flutter.dev/. ## Table of Contents - [Types of code blocks](#types-of-code-blocks) - - [Sample tool](#sample-tool) - [Snippet tool](#snippet-tool) + - [Sample tool](#sample-tool) - [Skeletons](#skeletons) - [Test Doc Generation Workflow](#test-doc-generation-workflow) @@ -18,21 +18,21 @@ in the source code into API documentation, as seen on https://api.flutter.dev/. There's two kinds of code blocks. -* samples, which are more or less context-free snippets that we +* snippets, which are more or less context-free code snippets that we magically determine how to analyze, and -* snippets, which get placed into a full-fledged application, and can +* samples, which get placed into a full-fledged application, and can be actually executed inline in the documentation using DartPad. -### Sample Tool +### Snippet Tool -![Code sample image](assets/code_sample.png) +![Code snippet image](assets/code_snippet.png) -The code `sample` tool generates a block containing a description and example -code. Here is an example of the code `sample` tool in use: +The code `snippet` tool generates a block containing a description and example +code. Here is an example of the code `snippet` tool in use: ```dart -/// {@tool sample} +/// {@tool snippet} /// /// If the avatar is to have an image, the image should be specified in the /// [backgroundImage] property: @@ -48,13 +48,13 @@ code. Here is an example of the code `sample` tool in use: This will generate sample code that can be copied to the clipboard and added to existing applications. -This uses the skeleton for [sample](config/skeletons/sample.html) +This uses the skeleton for [snippet](config/skeletons/snippet.html) snippets when generating the HTML to put into the Dart docs. #### Analysis The `../bots/analyze-sample-code.dart` script finds code inside the -`@tool sample` sections and uses the Dart analyzer to check them. +`@tool snippet` sections and uses the Dart analyzer to check them. There are several kinds of sample code you can specify: @@ -91,16 +91,16 @@ You can assume that the entire Flutter framework and most common `dart:*` packages are imported and in scope; `dart:math` as `math` and `dart:ui` as `ui`. -### Snippet Tool +### Sample Tool -![Code snippet image](assets/code_snippet.png) +![Code sample image](assets/code_sample.png) -The code `snippet` tool can expand sample code into full Flutter applications. +The code `sample` tool can expand sample code into full Flutter applications. These sample applications can be directly copied and used to demonstrate the API's functionality in a sample application: ```dart -/// {@tool snippet --template=stateless_widget_material} +/// {@tool sample --template=stateless_widget_material} /// This example shows how to make a simple [FloatingActionButton] in a /// [Scaffold], with a pink [backgroundColor] and a thumbs up [Icon]. /// @@ -126,10 +126,10 @@ API's functionality in a sample application: /// {@end-tool} ``` -This uses the skeleton for [application](config/skeletons/application.html) +This uses the skeleton for [application](config/skeletons/sample.html) snippets. -Code `snippets` also allow for quick Flutter app generation using the following command: +Code `sample` also allow for quick Flutter app generation using the following command: ```bash flutter create --sample=[directory.File.sampleNumber] [name_of_project_directory] @@ -138,12 +138,12 @@ flutter create --sample=[directory.File.sampleNumber] [name_of_project_directory #### Templates In order to support showing an entire app when you click on the right tab of -the code snippet UI, we have to be able to insert the `snippet` into the template -and instantiate the right parts. +the code sample UI, we have to be able to insert the `sample` block into the +template and instantiate the right parts. To do this, there is a [config/templates](config/templates) directory that contains a list of templates. These templates represent an entire app that the -`snippet` can be placed into, basically a replacement for `lib/main.dart` in a +`sample` can be placed into, basically a replacement for `lib/main.dart` in a flutter app package. For more information about how to create, use, or update templates, see @@ -152,7 +152,7 @@ For more information about how to create, use, or update templates, see #### Analysis The `../bots/analyze-sample-code.dart` script finds code inside the -`@tool snippet` sections and uses the Dart analyzer to check them +`@tool sample` sections and uses the Dart analyzer to check them after applying the specified template. ## Skeletons @@ -161,17 +161,17 @@ A skeleton (in relation to this tool) is an HTML template into which the Dart code blocks and descriptions are interpolated. There is currently one skeleton for -[application](config/skeletons/application.html) `snippets` and one for -[sample](config/skeletons/sample.html) `snippets`, but there could be more. +[application](config/skeletons/sample.html) samples and one for +[snippet](config/skeletons/snippet.html) code samples, but there could be more. Skeletons use mustache notation (e.g. `{{code}}`) to mark where components will be interpolated into the template. It doesn't actually use the mustache package, since these are simple string substitutions, but it uses the same syntax. -The code block generation tools process the source input and emit HTML for output, -which dartdoc places back into the documentation. Any options given to the - `{@tool ...}` directive are passed on verbatim to the tool. +The code block generation tools process the source input and emit HTML for +output, which dartdoc places back into the documentation. Any options given to +the `{@tool ...}` directive are passed on verbatim to the tool. The `snippets` tool renders these examples through a combination of markdown and HTML using the `{@inject-html}` dartdoc directive. diff --git a/dev/snippets/assets/code_sample.png b/dev/snippets/assets/code_sample.png index cc3e125cc5ea7385e827d2e77360ee6f471e319b..96bf7e86bfbbb0680a1a67203a02fa148ac67f47 100644 GIT binary patch literal 113476 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 eDJb8`(Lh&_}CeKetuJur5jnI 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%0DDXURsJAnlpQNJTA&2 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 delta 32191 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 eDJb8`(Lh&_}CeKetuJur5jnI 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%0DDXURsJAnlpQNJTA&2 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 diff --git a/dev/snippets/config/skeletons/application.html b/dev/snippets/config/skeletons/application.html deleted file mode 100644 index 56b648cc0335b..0000000000000 --- a/dev/snippets/config/skeletons/application.html +++ /dev/null @@ -1,43 +0,0 @@ -{@inject-html} - -

-
- - - -
-
-
- {{description}} -
- -
{{code}}
-
-
- -
-{@end-inject-html} diff --git a/dev/snippets/config/skeletons/dartpad-application.html b/dev/snippets/config/skeletons/dartpad-sample.html similarity index 100% rename from dev/snippets/config/skeletons/dartpad-application.html rename to dev/snippets/config/skeletons/dartpad-sample.html diff --git a/dev/snippets/config/skeletons/sample.html b/dev/snippets/config/skeletons/sample.html index 75f87824e4e85..56b648cc0335b 100644 --- a/dev/snippets/config/skeletons/sample.html +++ b/dev/snippets/config/skeletons/sample.html @@ -9,16 +9,34 @@
- + + +
-
{{description}} +
+ {{description}}
-
{{code}}
+
{{code}}
+
+
+
diff --git a/dev/snippets/config/skeletons/snippet.html b/dev/snippets/config/skeletons/snippet.html new file mode 100644 index 0000000000000..75f87824e4e85 --- /dev/null +++ b/dev/snippets/config/skeletons/snippet.html @@ -0,0 +1,25 @@ +{@inject-html} + + +
+ +
+
+
{{description}} +
+ +
{{code}}
+
+
+
+{@end-inject-html} diff --git a/dev/snippets/lib/configuration.dart b/dev/snippets/lib/configuration.dart index 19fd93ee5eb8e..efbe8ca19f414 100644 --- a/dev/snippets/lib/configuration.dart +++ b/dev/snippets/lib/configuration.dart @@ -11,10 +11,10 @@ import 'package:path/path.dart' as path; enum SnippetType { /// Produces a snippet that includes the code interpolated into an application /// template. - application, + sample, /// Produces a nicely formatted sample code, but no application. - sample, + snippet, } /// Return the name of an enum item. @@ -69,7 +69,7 @@ class Configuration { /// Gets the skeleton file to use for the given [SnippetType] and DartPad preference. File getHtmlSkeletonFile(SnippetType type, {bool showDartPad = false}) { - assert(!showDartPad || type == SnippetType.application, + assert(!showDartPad || type == SnippetType.sample, 'Only application snippets work with dartpad.'); final String filename = '${showDartPad ? 'dartpad-' : ''}${getEnumName(type)}.html'; diff --git a/dev/snippets/lib/main.dart b/dev/snippets/lib/main.dart index e9f9d8adc6a8a..fd5f8dd4e1d27 100644 --- a/dev/snippets/lib/main.dart +++ b/dev/snippets/lib/main.dart @@ -32,13 +32,13 @@ void main(List argList) { SnippetType.values.map((SnippetType type) => getEnumName(type)).toList(); parser.addOption( _kTypeOption, - defaultsTo: getEnumName(SnippetType.application), + defaultsTo: getEnumName(SnippetType.sample), allowed: snippetTypes, allowedHelp: { - getEnumName(SnippetType.application): - 'Produce a code snippet complete with embedding the sample in an ' - 'application template.', getEnumName(SnippetType.sample): + 'Produce a code sample application complete with embedding the sample in an ' + 'application template.', + getEnumName(SnippetType.snippet): 'Produce a nicely formatted piece of sample code. Does not embed the ' 'sample into an application template.', }, @@ -52,7 +52,7 @@ void main(List argList) { parser.addOption( _kOutputOption, defaultsTo: null, - help: 'The output path for the generated snippet application. Overrides ' + help: 'The output path for the generated sample application. Overrides ' 'the naming generated by the --package/--library/--element arguments. ' 'Metadata will be written alongside in a .json file. ' 'The basename of this argument is used as the ID', @@ -60,22 +60,22 @@ void main(List argList) { parser.addOption( _kInputOption, defaultsTo: environment['INPUT'], - help: 'The input file containing the snippet code to inject.', + help: 'The input file containing the sample code to inject.', ); parser.addOption( _kPackageOption, defaultsTo: environment['PACKAGE_NAME'], - help: 'The name of the package that this snippet belongs to.', + help: 'The name of the package that this sample belongs to.', ); parser.addOption( _kLibraryOption, defaultsTo: environment['LIBRARY_NAME'], - help: 'The name of the library that this snippet belongs to.', + help: 'The name of the library that this sample belongs to.', ); parser.addOption( _kElementOption, defaultsTo: environment['ELEMENT_NAME'], - help: 'The name of the element that this snippet belongs to.', + help: 'The name of the element that this sample belongs to.', ); parser.addOption( _kSerialOption, @@ -92,9 +92,9 @@ void main(List argList) { _kShowDartPad, defaultsTo: false, negatable: false, - help: 'Indicates whether DartPad should be included in the snippet\'s ' + help: 'Indicates whether DartPad should be included in the sample\'s ' 'final HTML output. This flag only applies when the type parameter is ' - '"application".', + '"sample".', ); final ArgResults args = parser.parse(argList); @@ -108,9 +108,9 @@ void main(List argList) { .firstWhere((SnippetType type) => getEnumName(type) == args[_kTypeOption], orElse: () => null); assert(snippetType != null, "Unable to find '${args[_kTypeOption]}' in SnippetType enum."); - if (args[_kShowDartPad] == true && snippetType != SnippetType.application) { + if (args[_kShowDartPad] == true && snippetType != SnippetType.sample) { errorExit('${args[_kTypeOption]} was selected, but the --dartpad flag is only valid ' - 'for application snippets.'); + 'for application sample code.'); } if (args[_kInputOption] == null) { @@ -125,12 +125,12 @@ void main(List argList) { } String template; - if (snippetType == SnippetType.application) { + if (snippetType == SnippetType.sample) { final String templateArg = args[_kTemplateOption] as String; if (templateArg == null || templateArg.isEmpty) { stderr.writeln(parser.usage); errorExit('The --$_kTemplateOption option must be specified on the command ' - 'line for application snippets.'); + 'line for application samples.'); } template = templateArg.replaceAll(RegExp(r'.tmpl$'), ''); } diff --git a/dev/snippets/lib/snippets.dart b/dev/snippets/lib/snippets.dart index b21c795c36bbc..946ac3da347b7 100644 --- a/dev/snippets/lib/snippets.dart +++ b/dev/snippets/lib/snippets.dart @@ -48,7 +48,7 @@ class SnippetGenerator { static DartFormatter formatter = DartFormatter(pageWidth: 80, fixes: StyleFix.all); /// This returns the output file for a given snippet ID. Only used for - /// [SnippetType.application] snippets. + /// [SnippetType.sample] snippets. File getOutputFile(String id) => File(path.join(configuration.outputDirectory.path, '$id.dart')); /// Gets the path to the template file requested. @@ -60,7 +60,7 @@ class SnippetGenerator { /// Injects the [injections] into the [template], and turning the /// "description" injection into a comment. Only used for - /// [SnippetType.application] snippets. + /// [SnippetType.sample] snippets. String interpolateTemplate(List<_ComponentTuple> injections, String template, Map metadata) { final RegExp moustacheRegExp = RegExp('{{([^}]+)}}'); return template.replaceAllMapped(moustacheRegExp, (Match match) { @@ -99,7 +99,7 @@ class SnippetGenerator { /// components, and we care about the order of the injections. /// /// Takes into account the [type] and doesn't substitute in the id and the app - /// if not a [SnippetType.application] snippet. + /// if not a [SnippetType.sample] snippet. String interpolateSkeleton(SnippetType type, List<_ComponentTuple> injections, String skeleton, Map metadata) { final List result = []; const HtmlEscape htmlEscape = HtmlEscape(); @@ -133,7 +133,7 @@ class SnippetGenerator { 'element': metadata['element'] as String ?? '', 'app': '', }; - if (type == SnippetType.application) { + if (type == SnippetType.sample) { substitutions ..['serial'] = metadata['serial']?.toString() ?? '0' ..['app'] = htmlEscape.convert(injections.firstWhere((_ComponentTuple tuple) => tuple.name == 'app').mergedContent); @@ -201,20 +201,20 @@ class SnippetGenerator { /// comment markers). /// /// The [type] is the type of snippet to create: either a - /// [SnippetType.application] or a [SnippetType.sample]. + /// [SnippetType.sample] or a [SnippetType.snippet]. /// /// [showDartPad] indicates whether DartPad should be shown where possible. /// Currently, this value only has an effect if [type] is - /// [SnippetType.application], in which case an alternate skeleton file is + /// [SnippetType.sample], in which case an alternate skeleton file is /// used to create the final HTML output. /// /// The [template] must not be null if the [type] is - /// [SnippetType.application], and specifies the name of the template to use + /// [SnippetType.sample], and specifies the name of the template to use /// for the application code. /// /// The [id] is a string ID to use for the output file, and to tell the user /// about in the `flutter create` hint. It must not be null if the [type] is - /// [SnippetType.application]. + /// [SnippetType.sample]. String generate( File input, SnippetType type, { @@ -223,14 +223,14 @@ class SnippetGenerator { File output, @required Map metadata, }) { - assert(template != null || type != SnippetType.application); + assert(template != null || type != SnippetType.sample); assert(metadata != null && metadata['id'] != null); assert(input != null); - assert(!showDartPad || type == SnippetType.application, + assert(!showDartPad || type == SnippetType.sample, 'Only application snippets work with dartpad.'); final List<_ComponentTuple> snippetData = parseInput(_loadFileAsUtf8(input)); switch (type) { - case SnippetType.application: + case SnippetType.sample: final Directory templatesDir = configuration.templatesDirectory; if (templatesDir == null) { stderr.writeln('Unable to find the templates directory.'); @@ -272,7 +272,7 @@ class SnippetGenerator { }); metadataFile.writeAsStringSync(jsonEncoder.convert(metadata)); break; - case SnippetType.sample: + case SnippetType.snippet: break; } final String skeleton = diff --git a/dev/snippets/test/configuration_test.dart b/dev/snippets/test/configuration_test.dart index 6aefbb8635f7a..6db97d6a65cbe 100644 --- a/dev/snippets/test/configuration_test.dart +++ b/dev/snippets/test/configuration_test.dart @@ -33,21 +33,21 @@ void main() { }); test('html skeleton file for sample is correct', () async { expect( - config.getHtmlSkeletonFile(SnippetType.sample).path, + config.getHtmlSkeletonFile(SnippetType.snippet).path, matches(RegExp( - r'[/\\]flutter sdk[/\\]dev[/\\]snippets[/\\]config[/\\]skeletons[/\\]sample.html'))); + r'[/\\]flutter sdk[/\\]dev[/\\]snippets[/\\]config[/\\]skeletons[/\\]snippet.html'))); }); test('html skeleton file for app with no dartpad is correct', () async { expect( - config.getHtmlSkeletonFile(SnippetType.application).path, + config.getHtmlSkeletonFile(SnippetType.sample).path, matches(RegExp( - r'[/\\]flutter sdk[/\\]dev[/\\]snippets[/\\]config[/\\]skeletons[/\\]application.html'))); + r'[/\\]flutter sdk[/\\]dev[/\\]snippets[/\\]config[/\\]skeletons[/\\]sample.html'))); }); test('html skeleton file for app with dartpad is correct', () async { expect( - config.getHtmlSkeletonFile(SnippetType.application, showDartPad: true).path, + config.getHtmlSkeletonFile(SnippetType.sample, showDartPad: true).path, matches(RegExp( - r'[/\\]flutter sdk[/\\]dev[/\\]snippets[/\\]config[/\\]skeletons[/\\]dartpad-application.html'))); + r'[/\\]flutter sdk[/\\]dev[/\\]snippets[/\\]config[/\\]skeletons[/\\]dartpad-sample.html'))); }); }); } diff --git a/dev/snippets/test/snippets_test.dart b/dev/snippets/test/snippets_test.dart index 3d93f024c135d..18960c2640cd0 100644 --- a/dev/snippets/test/snippets_test.dart +++ b/dev/snippets/test/snippets_test.dart @@ -37,20 +37,20 @@ main() { {{code}} } '''); - configuration.getHtmlSkeletonFile(SnippetType.application).writeAsStringSync(''' + configuration.getHtmlSkeletonFile(SnippetType.sample).writeAsStringSync('''
HTML Bits
{{description}}
{{code}}
{{app}}
More HTML Bits
'''); - configuration.getHtmlSkeletonFile(SnippetType.sample).writeAsStringSync(''' + configuration.getHtmlSkeletonFile(SnippetType.snippet).writeAsStringSync('''
HTML Bits
{{description}}
{{code}}
More HTML Bits
'''); - configuration.getHtmlSkeletonFile(SnippetType.application, showDartPad: true).writeAsStringSync(''' + configuration.getHtmlSkeletonFile(SnippetType.sample, showDartPad: true).writeAsStringSync('''
HTML Bits (DartPad-style)
More HTML Bits
@@ -83,7 +83,7 @@ void main() { final String html = generator.generate( inputFile, - SnippetType.application, + SnippetType.sample, template: 'template', metadata: { 'id': 'id', @@ -126,7 +126,7 @@ void main() { final String html = generator.generate( inputFile, - SnippetType.sample, + SnippetType.snippet, metadata: {'id': 'id'}, ); expect(html, contains('
HTML Bits
')); @@ -155,7 +155,7 @@ void main() { final String html = generator.generate( inputFile, - SnippetType.application, + SnippetType.sample, showDartPad: true, template: 'template', metadata: {'id': 'id'}, @@ -185,7 +185,7 @@ void main() { generator.generate( inputFile, - SnippetType.application, + SnippetType.sample, template: 'template', output: outputFile, metadata: {'sourcePath': 'some/path.dart', 'id': 'id'}, diff --git a/packages/flutter/lib/src/animation/animation.dart b/packages/flutter/lib/src/animation/animation.dart index 229f031e241f7..9f6785528b1e0 100644 --- a/packages/flutter/lib/src/animation/animation.dart +++ b/packages/flutter/lib/src/animation/animation.dart @@ -106,7 +106,7 @@ abstract class Animation extends Listenable implements ValueListenable { /// argument to the method (`child`), whose value is derived by applying the /// given [Tween] to the value of this [Animation]. /// - /// {@tool sample} + /// {@tool snippet} /// /// Given an [AnimationController] `_controller`, the following code creates /// an `Animation` that swings from top left to top right as the @@ -121,7 +121,7 @@ abstract class Animation extends Listenable implements ValueListenable { /// ); /// ``` /// {@end-tool} - /// {@tool sample} + /// {@tool snippet} /// /// The `_alignment.value` could then be used in a widget's build method, for /// instance, to position a child using an [Align] widget such that the @@ -141,7 +141,7 @@ abstract class Animation extends Listenable implements ValueListenable { /// Animation _alignment2 = _controller.drive(_tween); /// ``` /// {@end-tool} - /// {@tool sample} + /// {@tool snippet} /// /// The following code is exactly equivalent, and is typically clearer when /// the tweens are created inline, as might be preferred when the tweens have diff --git a/packages/flutter/lib/src/animation/animation_controller.dart b/packages/flutter/lib/src/animation/animation_controller.dart index d2fa73442675c..3ecab46f48ef4 100644 --- a/packages/flutter/lib/src/animation/animation_controller.dart +++ b/packages/flutter/lib/src/animation/animation_controller.dart @@ -124,7 +124,7 @@ enum AnimationBehavior { /// This can be used to write code such as the `fadeOutAndUpdateState` method /// below. /// -/// {@tool sample} +/// {@tool snippet} /// /// Here is a stateful `Foo` widget. Its [State] uses the /// [SingleTickerProviderStateMixin] to implement the necessary @@ -175,7 +175,7 @@ enum AnimationBehavior { /// } /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// The following method (for a [State] subclass) drives two animation /// controllers using Dart's asynchronous syntax for awaiting [Future] objects: diff --git a/packages/flutter/lib/src/animation/animations.dart b/packages/flutter/lib/src/animation/animations.dart index 91cbf97e2eb2a..7541916a5ca34 100644 --- a/packages/flutter/lib/src/animation/animations.dart +++ b/packages/flutter/lib/src/animation/animations.dart @@ -327,7 +327,7 @@ class ReverseAnimation extends Animation /// /// If you want to apply a [Curve] to a [Tween], consider using [CurveTween]. /// -/// {@tool sample} +/// {@tool snippet} /// /// The following code snippet shows how you can apply a curve to a linear /// animation produced by an [AnimationController] `controller`. @@ -339,7 +339,7 @@ class ReverseAnimation extends Animation /// ); /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// This second code snippet shows how to apply a different curve in the forward /// direction than in the reverse direction. This can't be done using a diff --git a/packages/flutter/lib/src/animation/curves.dart b/packages/flutter/lib/src/animation/curves.dart index 9849eefa5446f..1213ebb812503 100644 --- a/packages/flutter/lib/src/animation/curves.dart +++ b/packages/flutter/lib/src/animation/curves.dart @@ -318,7 +318,7 @@ class Cubic extends Curve { /// part of the curve, or hardly at all in another part of the curve, depending /// on the definition of the curve. /// -/// {@tool snippet --template=stateless_widget_material} +/// {@tool sample --template=stateless_widget_material} /// This example shows how to use a [Curve2D] to modify the position of a widget /// so that it can follow an arbitrary path. /// diff --git a/packages/flutter/lib/src/animation/tween.dart b/packages/flutter/lib/src/animation/tween.dart index 4be58be11dcac..8b31868428d17 100644 --- a/packages/flutter/lib/src/animation/tween.dart +++ b/packages/flutter/lib/src/animation/tween.dart @@ -128,7 +128,7 @@ class _ChainedEvaluation extends Animatable { /// which results in two separate [Animation] objects, each configured with a /// single [Tween]. /// -/// {@tool sample} +/// {@tool snippet} /// /// Suppose `_controller` is an [AnimationController], and we want to create an /// [Animation] that is controlled by that controller, and save it in @@ -143,7 +143,7 @@ class _ChainedEvaluation extends Animatable { /// ); /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// _animation = Tween( @@ -413,7 +413,7 @@ class ConstantTween extends Tween { /// curves when the animation is going forward vs when it is going backward, /// which can be useful in some scenarios.) /// -/// {@tool sample} +/// {@tool snippet} /// /// The following code snippet shows how you can apply a curve to a linear /// animation produced by an [AnimationController] `controller`: diff --git a/packages/flutter/lib/src/animation/tween_sequence.dart b/packages/flutter/lib/src/animation/tween_sequence.dart index 3d1712a239bff..30b81b0f28a24 100644 --- a/packages/flutter/lib/src/animation/tween_sequence.dart +++ b/packages/flutter/lib/src/animation/tween_sequence.dart @@ -17,7 +17,7 @@ import 'tween.dart'; /// animation's duration. Each tween defines the animation's value during the /// interval indicated by its weight. /// -/// {@tool sample} +/// {@tool snippet} /// This example defines an animation that uses an easing curve to interpolate /// between 5.0 and 10.0 during the first 40% of the animation, remains at 10.0 /// for the next 20%, and then returns to 5.0 for the final 40%. @@ -136,7 +136,7 @@ class TweenSequenceItem { /// animation's duration indicated by [weight] and this item's position /// in the list of items. /// - /// {@tool sample} + /// {@tool snippet} /// /// The value of this item can be "curved" by chaining it to a [CurveTween]. /// For example to create a tween that eases from 0.0 to 10.0: diff --git a/packages/flutter/lib/src/cupertino/app.dart b/packages/flutter/lib/src/cupertino/app.dart index 0aa5dbc77120b..063cc0087c172 100644 --- a/packages/flutter/lib/src/cupertino/app.dart +++ b/packages/flutter/lib/src/cupertino/app.dart @@ -195,7 +195,7 @@ class CupertinoApp extends StatefulWidget { final bool debugShowCheckedModeBanner; /// {@macro flutter.widgets.widgetsApp.shortcuts} - /// {@tool sample} + /// {@tool snippet} /// This example shows how to add a single shortcut for /// [LogicalKeyboardKey.select] to the default shortcuts without needing to /// add your own [Shortcuts] widget. @@ -223,7 +223,7 @@ class CupertinoApp extends StatefulWidget { final Map shortcuts; /// {@macro flutter.widgets.widgetsApp.actions} - /// {@tool sample} + /// {@tool snippet} /// This example shows how to add a single action handling an /// [ActivateAction] to the default actions without needing to /// add your own [Actions] widget. diff --git a/packages/flutter/lib/src/cupertino/colors.dart b/packages/flutter/lib/src/cupertino/colors.dart index fe2f3fa46d23e..44cf7ad20daa3 100644 --- a/packages/flutter/lib/src/cupertino/colors.dart +++ b/packages/flutter/lib/src/cupertino/colors.dart @@ -592,7 +592,7 @@ class CupertinoColors { /// [CupertinoDynamicColor.resolve] against its own [BuildContext], on a best-effort /// basis. /// -/// {@tool sample} +/// {@tool snippet} /// By default a [CupertinoButton] has no background color. The following sample /// code shows how to build a [CupertinoButton] that appears white in light mode, /// and changes automatically to black in dark mode. @@ -617,7 +617,7 @@ class CupertinoColors { /// implicitly resolves all the colors used in the retrieved [CupertinoThemeData], /// before returning it. /// -/// {@tool sample} +/// {@tool snippet} /// The following code sample creates a [Container] with the `primaryColor` of the /// current theme. If `primaryColor` is a [CupertinoDynamicColor], the container /// will be adaptive, thanks to [CupertinoTheme.of]: it will switch to `primaryColor`'s @@ -643,7 +643,7 @@ class CupertinoColors { /// the colors used in the [Border] have to be resolved manually before being passed /// to [CupertinoNavigationBar]'s constructor. /// -/// {@tool sample} +/// {@tool snippet} /// /// The following code samples demonstrate two cases where you have to manually /// resolve a [CupertinoDynamicColor]. diff --git a/packages/flutter/lib/src/cupertino/context_menu.dart b/packages/flutter/lib/src/cupertino/context_menu.dart index b790a39c4d147..4a0409a33d2e3 100644 --- a/packages/flutter/lib/src/cupertino/context_menu.dart +++ b/packages/flutter/lib/src/cupertino/context_menu.dart @@ -172,7 +172,7 @@ class CupertinoContextMenu extends StatefulWidget { /// child parameter provides access to the child displayed when the /// CupertinoContextMenu is closed. /// - /// {@tool sample} + /// {@tool snippet} /// /// Below is an example of using `previewBuilder` to show an image tile that's /// similar to each tile in the iOS iPhoto app's context menu. Several of diff --git a/packages/flutter/lib/src/cupertino/scrollbar.dart b/packages/flutter/lib/src/cupertino/scrollbar.dart index 633715a5ef0a6..3395d248ad15c 100644 --- a/packages/flutter/lib/src/cupertino/scrollbar.dart +++ b/packages/flutter/lib/src/cupertino/scrollbar.dart @@ -86,7 +86,7 @@ class CupertinoScrollbar extends StatefulWidget { /// Here is an example of using the `controller` parameter to enable /// scrollbar dragging for multiple independent ListViews: /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// final ScrollController _controllerOne = ScrollController(); diff --git a/packages/flutter/lib/src/cupertino/segmented_control.dart b/packages/flutter/lib/src/cupertino/segmented_control.dart index fa721391734fc..04c276b0f0510 100644 --- a/packages/flutter/lib/src/cupertino/segmented_control.dart +++ b/packages/flutter/lib/src/cupertino/segmented_control.dart @@ -122,7 +122,7 @@ class CupertinoSegmentedControl extends StatefulWidget { /// the parent [StatefulWidget] using the [State.setState] method, so that /// the parent gets rebuilt; for example: /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// class SegmentedControlExample extends StatefulWidget { diff --git a/packages/flutter/lib/src/cupertino/slider.dart b/packages/flutter/lib/src/cupertino/slider.dart index a8bb502bf80d0..e1327a9b9fc8e 100644 --- a/packages/flutter/lib/src/cupertino/slider.dart +++ b/packages/flutter/lib/src/cupertino/slider.dart @@ -117,7 +117,7 @@ class CupertinoSlider extends StatefulWidget { /// The value passed will be the last [value] that the slider had before the /// change began. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// CupertinoSlider( @@ -149,7 +149,7 @@ class CupertinoSlider extends StatefulWidget { /// [onChanged] for that), but rather to know when the user has completed /// selecting a new [value] by ending a drag. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// CupertinoSlider( diff --git a/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart b/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart index 78f68c637e512..d923851df3cdf 100644 --- a/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart +++ b/packages/flutter/lib/src/cupertino/sliding_segmented_control.dart @@ -178,7 +178,7 @@ class CupertinoSlidingSegmentedControl extends StatefulWidget { /// the parent [StatefulWidget] using the [State.setState] method, so that /// the parent gets rebuilt; for example: /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// class SegmentedControlExample extends StatefulWidget { diff --git a/packages/flutter/lib/src/cupertino/switch.dart b/packages/flutter/lib/src/cupertino/switch.dart index 25ccb04802193..ff3982e1965e3 100644 --- a/packages/flutter/lib/src/cupertino/switch.dart +++ b/packages/flutter/lib/src/cupertino/switch.dart @@ -26,7 +26,7 @@ import 'thumb_painter.dart'; /// that use a switch will listen for the [onChanged] callback and rebuild the /// switch with a new [value] to update the visual appearance of the switch. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample shows how to use a [CupertinoSwitch] in a [ListTile]. The /// [MergeSemantics] is used to turn the entire [ListTile] into a single item diff --git a/packages/flutter/lib/src/cupertino/tab_scaffold.dart b/packages/flutter/lib/src/cupertino/tab_scaffold.dart index 96c9b751210dc..5b9e0d68742ac 100644 --- a/packages/flutter/lib/src/cupertino/tab_scaffold.dart +++ b/packages/flutter/lib/src/cupertino/tab_scaffold.dart @@ -15,7 +15,7 @@ import 'theme.dart'; /// [CupertinoTabController] controls, as well as the currently selected tab item of /// its [CupertinoTabBar]. /// -/// {@tool sample} +/// {@tool snippet} /// /// [CupertinoTabController] can be used to switch tabs: /// @@ -135,7 +135,7 @@ class CupertinoTabController extends ChangeNotifier { /// (via [State.setState], for instance) from its descendant rather than from /// its ancestor. /// -/// {@tool sample} +/// {@tool snippet} /// /// A sample code implementing a typical iOS information architecture with tabs. /// diff --git a/packages/flutter/lib/src/cupertino/text_field.dart b/packages/flutter/lib/src/cupertino/text_field.dart index 805f4a12f6ef0..9969535c4c4ac 100644 --- a/packages/flutter/lib/src/cupertino/text_field.dart +++ b/packages/flutter/lib/src/cupertino/text_field.dart @@ -133,7 +133,7 @@ class _CupertinoTextFieldSelectionGestureDetectorBuilder extends TextSelectionGe /// [controller]. For example, to set the initial value of the text field, use /// a [controller] that already contains some text such as: /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// class MyPrefilledText extends StatefulWidget { diff --git a/packages/flutter/lib/src/foundation/annotations.dart b/packages/flutter/lib/src/foundation/annotations.dart index 35b4331cfd118..b57bfac68e6d6 100644 --- a/packages/flutter/lib/src/foundation/annotations.dart +++ b/packages/flutter/lib/src/foundation/annotations.dart @@ -16,7 +16,7 @@ /// /// A class can have multiple categories. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// /// A copper coffee pot, as desired by Ben Turpin. @@ -54,7 +54,7 @@ class Category { /// /// Each class should only have one [DocumentationIcon]. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// /// Utility class for beginning a dream-sharing sequence. @@ -87,7 +87,7 @@ class DocumentationIcon { /// for this purpose, but on occasion the first paragraph is either too short /// or too long for use in isolation, without the remainder of the documentation. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// /// A famous cat. diff --git a/packages/flutter/lib/src/foundation/binding.dart b/packages/flutter/lib/src/foundation/binding.dart index 9c8a2707a899c..daa9ed62a35c2 100644 --- a/packages/flutter/lib/src/foundation/binding.dart +++ b/packages/flutter/lib/src/foundation/binding.dart @@ -453,7 +453,7 @@ abstract class BindingBase { /// not wrapped in a guard that allows the tree shaker to remove it (see /// sample code below). /// - /// {@tool sample} + /// {@tool snippet} /// The following code registers a service extension that is only included in /// debug builds. /// @@ -467,7 +467,7 @@ abstract class BindingBase { /// ``` /// {@end-tool} /// - /// {@tool sample} + /// {@tool snippet} /// A service extension registered with the following code snippet is /// available in debug and profile mode. /// diff --git a/packages/flutter/lib/src/foundation/diagnostics.dart b/packages/flutter/lib/src/foundation/diagnostics.dart index f6af1afa397a0..1a2243864cbfe 100644 --- a/packages/flutter/lib/src/foundation/diagnostics.dart +++ b/packages/flutter/lib/src/foundation/diagnostics.dart @@ -1716,7 +1716,7 @@ abstract class DiagnosticsNode { /// Debugging message displayed like a property. /// -/// {@tool sample} +/// {@tool snippet} /// /// The following two properties are better expressed using this /// [MessageProperty] class, rather than [StringProperty], as the intent is to @@ -1728,7 +1728,7 @@ abstract class DiagnosticsNode { /// var usefulness = MessageProperty('usefulness ratio', 'no metrics collected yet (never painted)'); /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// On the other hand, [StringProperty] is better suited when the property has a /// concrete value that is a string: @@ -2055,7 +2055,7 @@ class PercentProperty extends DoubleProperty { /// when `visible` is false and nothing when visible is true, in contrast to /// `visible: true` or `visible: false`. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// FlagProperty( @@ -2065,7 +2065,7 @@ class PercentProperty extends DoubleProperty { /// ) /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// [FlagProperty] should also be used instead of [DiagnosticsProperty] /// if showing the bool value would not clearly indicate the meaning of the @@ -2969,7 +2969,7 @@ String describeIdentity(Object object) => '${object.runtimeType}#${shortHash(obj /// /// Strips off the enum class name from the `enumEntry.toString()`. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// enum Day { @@ -3189,7 +3189,7 @@ mixin DiagnosticableMixin { /// `toString` method implementation works fine using [DiagnosticsProperty] /// directly. /// - /// {@tool sample} + /// {@tool snippet} /// /// This example shows best practices for implementing [debugFillProperties] /// illustrating use of all common [DiagnosticsProperty] subclasses and all diff --git a/packages/flutter/lib/src/foundation/licenses.dart b/packages/flutter/lib/src/foundation/licenses.dart index 5c9cd802add4b..82b4b4c41f4e1 100644 --- a/packages/flutter/lib/src/foundation/licenses.dart +++ b/packages/flutter/lib/src/foundation/licenses.dart @@ -66,7 +66,7 @@ enum _LicenseEntryWithLineBreaksParserState { /// unless they start with the same number of spaces as the previous line, in /// which case it's assumed they are a continuation of an indented paragraph. /// -/// {@tool sample} +/// {@tool snippet} /// /// For example, the BSD license in this format could be encoded as follows: /// diff --git a/packages/flutter/lib/src/foundation/stack_frame.dart b/packages/flutter/lib/src/foundation/stack_frame.dart index 387be8f9b2fb4..d0ffc936333f9 100644 --- a/packages/flutter/lib/src/foundation/stack_frame.dart +++ b/packages/flutter/lib/src/foundation/stack_frame.dart @@ -8,7 +8,7 @@ import 'package:meta/meta.dart'; /// A object representation of a frame from a stack trace. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example creates a traversable list of parsed [StackFrame] objects from /// the current [StackTrace]. diff --git a/packages/flutter/lib/src/material/about.dart b/packages/flutter/lib/src/material/about.dart index 44fc5397f8a2a..3fd501ea57905 100644 --- a/packages/flutter/lib/src/material/about.dart +++ b/packages/flutter/lib/src/material/about.dart @@ -33,7 +33,7 @@ import 'theme.dart'; /// /// If your application does not have a [Drawer], you should provide an /// affordance to call [showAboutDialog] or (at least) [showLicensePage]. -/// {@tool snippet --template=stateless_widget_material} +/// {@tool sample --template=stateless_widget_material} /// /// This sample shows two ways to open [AboutDialog]. The first one /// uses an [AboutListTile], and the second uses the [showAboutDialog] function. diff --git a/packages/flutter/lib/src/material/animated_icons/animated_icons.dart b/packages/flutter/lib/src/material/animated_icons/animated_icons.dart index 97366e44cbd5f..cf2d66656df7b 100644 --- a/packages/flutter/lib/src/material/animated_icons/animated_icons.dart +++ b/packages/flutter/lib/src/material/animated_icons/animated_icons.dart @@ -18,7 +18,7 @@ part of material_animated_icons; /// /// {@youtube 560 315 https://www.youtube.com/watch?v=pJcbh8pbvJs} /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// AnimatedIcon( diff --git a/packages/flutter/lib/src/material/app.dart b/packages/flutter/lib/src/material/app.dart index 1f7d105862505..dff4a67a07486 100644 --- a/packages/flutter/lib/src/material/app.dart +++ b/packages/flutter/lib/src/material/app.dart @@ -77,7 +77,7 @@ enum ThemeMode { /// If [home], [routes], [onGenerateRoute], and [onUnknownRoute] are all null, /// and [builder] is not null, then no [Navigator] is created. /// -/// {@tool sample} +/// {@tool snippet} /// This example shows how to create a [MaterialApp] that disables the "debug" /// banner with a [home] route that will be displayed when the app is launched. /// @@ -95,7 +95,7 @@ enum ThemeMode { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// This example shows how to create a [MaterialApp] that uses the [routes] /// `Map` to define the "home" route and an "about" route. /// @@ -121,7 +121,7 @@ enum ThemeMode { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// This example shows how to create a [MaterialApp] that defines a [theme] that /// will be used for material widgets in the app. /// @@ -458,7 +458,7 @@ class MaterialApp extends StatefulWidget { final bool debugShowCheckedModeBanner; /// {@macro flutter.widgets.widgetsApp.shortcuts} - /// {@tool sample} + /// {@tool snippet} /// This example shows how to add a single shortcut for /// [LogicalKeyboardKey.select] to the default shortcuts without needing to /// add your own [Shortcuts] widget. @@ -486,7 +486,7 @@ class MaterialApp extends StatefulWidget { final Map shortcuts; /// {@macro flutter.widgets.widgetsApp.actions} - /// {@tool sample} + /// {@tool snippet} /// This example shows how to add a single action handling an /// [ActivateAction] to the default actions without needing to /// add your own [Actions] widget. diff --git a/packages/flutter/lib/src/material/app_bar.dart b/packages/flutter/lib/src/material/app_bar.dart index 72b8f259fcaaf..e76c45fe18aed 100644 --- a/packages/flutter/lib/src/material/app_bar.dart +++ b/packages/flutter/lib/src/material/app_bar.dart @@ -214,7 +214,7 @@ class AppBar extends StatefulWidget implements PreferredSizeWidget { /// there's no [Drawer] and the parent [Navigator] can go back, the [AppBar] /// will use a [BackButton] that calls [Navigator.maybePop]. /// - /// {@tool sample} + /// {@tool snippet} /// /// The following code shows how the drawer button could be manually specified /// instead of relying on [automaticallyImplyLeading]: @@ -835,7 +835,7 @@ class _SliverAppBarDelegate extends SliverPersistentHeaderDelegate { /// [actions], above the [bottom] (if any). If a [flexibleSpace] widget is /// specified then it is stacked behind the toolbar and the bottom widget. /// -/// {@tool sample} +/// {@tool snippet} /// /// This is an example that could be included in a [CustomScrollView]'s /// [CustomScrollView.slivers] list: @@ -966,7 +966,7 @@ class SliverAppBar extends StatefulWidget { /// For less common operations, consider using a [PopupMenuButton] as the /// last action. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Scaffold( diff --git a/packages/flutter/lib/src/material/bottom_app_bar.dart b/packages/flutter/lib/src/material/bottom_app_bar.dart index bb53bac8d6081..249a31283140e 100644 --- a/packages/flutter/lib/src/material/bottom_app_bar.dart +++ b/packages/flutter/lib/src/material/bottom_app_bar.dart @@ -21,7 +21,7 @@ import 'theme.dart'; /// /// Typically used with a [Scaffold] and a [FloatingActionButton]. /// -/// {@tool sample} +/// {@tool snippet} /// ```dart /// Scaffold( /// bottomNavigationBar: BottomAppBar( diff --git a/packages/flutter/lib/src/material/bottom_navigation_bar.dart b/packages/flutter/lib/src/material/bottom_navigation_bar.dart index 2b6856765e62b..d6bfd58f6d7d4 100644 --- a/packages/flutter/lib/src/material/bottom_navigation_bar.dart +++ b/packages/flutter/lib/src/material/bottom_navigation_bar.dart @@ -62,7 +62,7 @@ enum BottomNavigationBarType { /// case it's assumed that each item will have a different background color /// and that background color will contrast well with white. /// -/// {@tool snippet --template=stateful_widget_material} +/// {@tool sample --template=stateful_widget_material} /// This example shows a [BottomNavigationBar] as it is used within a [Scaffold] /// widget. The [BottomNavigationBar] has three [BottomNavigationBarItem] /// widgets and the [currentIndex] is set to index 0. The selected item is diff --git a/packages/flutter/lib/src/material/bottom_sheet.dart b/packages/flutter/lib/src/material/bottom_sheet.dart index 8cdc948aeb9d2..0ecb4955b82cb 100644 --- a/packages/flutter/lib/src/material/bottom_sheet.dart +++ b/packages/flutter/lib/src/material/bottom_sheet.dart @@ -457,7 +457,7 @@ class _ModalBottomSheetRoute extends PopupRoute { /// /// {@animation 350 622 https://flutter.github.io/assets-for-api-docs/assets/material/show_modal_bottom_sheet.mp4} /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This example demonstrates how to use `showModalBottomSheet` to display a /// bottom sheet that obscures the content behind it when a user taps a button. diff --git a/packages/flutter/lib/src/material/card.dart b/packages/flutter/lib/src/material/card.dart index 9cb8be9e03189..785db00eb1002 100644 --- a/packages/flutter/lib/src/material/card.dart +++ b/packages/flutter/lib/src/material/card.dart @@ -19,7 +19,7 @@ import 'theme.dart'; /// some text describing a musical, and the other with buttons for buying /// tickets or listening to the show.](https://flutter.github.io/assets-for-api-docs/assets/material/card.png) /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This sample shows creation of a [Card] widget that shows album information /// and two actions. @@ -59,7 +59,7 @@ import 'theme.dart'; /// Sometimes the primary action area of a card is the card itself. Cards can be /// one large touch target that shows a detail screen when tapped. /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This sample shows creation of a [Card] widget that can be tapped. When /// tapped this [Card]'s [InkWell] displays an "ink splash" that fills the diff --git a/packages/flutter/lib/src/material/checkbox_list_tile.dart b/packages/flutter/lib/src/material/checkbox_list_tile.dart index e2b76f796fb58..d1e21c471ecdb 100644 --- a/packages/flutter/lib/src/material/checkbox_list_tile.dart +++ b/packages/flutter/lib/src/material/checkbox_list_tile.dart @@ -37,7 +37,7 @@ import 'theme_data.dart'; /// To show the [CheckboxListTile] as disabled, pass null as the [onChanged] /// callback. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// ![CheckboxListTile sample](https://flutter.github.io/assets-for-api-docs/assets/material/checkbox_list_tile.png) /// @@ -82,7 +82,7 @@ import 'theme_data.dart'; /// into one. Therefore, it may be necessary to create a custom radio tile /// widget to accommodate similar use cases. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// ![Checkbox list tile semantics sample](https://flutter.github.io/assets-for-api-docs/assets/material/checkbox_list_tile_semantics.png) /// @@ -166,7 +166,7 @@ import 'theme_data.dart'; /// combining [Checkbox] with other widgets, such as [Text], [Padding] and /// [InkWell]. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// ![Custom checkbox list tile sample](https://flutter.github.io/assets-for-api-docs/assets/material/checkbox_list_tile_custom.png) /// diff --git a/packages/flutter/lib/src/material/chip.dart b/packages/flutter/lib/src/material/chip.dart index cce2ee213de18..16206ff9d7e3e 100644 --- a/packages/flutter/lib/src/material/chip.dart +++ b/packages/flutter/lib/src/material/chip.dart @@ -192,7 +192,7 @@ abstract class DeletableChipAttributes { /// that the user tapped the delete button. In order to delete the chip, you /// have to do something similar to the following sample: /// - /// {@tool snippet --template=stateful_widget_scaffold_center} + /// {@tool sample --template=stateful_widget_scaffold_center} /// /// This sample shows how to use [onDeleted] to remove an entry when the /// delete button is tapped. @@ -341,7 +341,7 @@ abstract class SelectableChipAttributes { /// The [onSelected] and [TappableChipAttributes.onPressed] callbacks must not /// both be specified at the same time. /// - /// {@tool sample} + /// {@tool snippet} /// /// A [StatefulWidget] that illustrates use of onSelected in an [InputChip]. /// @@ -479,7 +479,7 @@ abstract class TappableChipAttributes { /// taps on the label or avatar parts of the chip. If [onPressed] is null, /// then the chip will be disabled. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// class Blacksmith extends StatelessWidget { @@ -525,7 +525,7 @@ abstract class TappableChipAttributes { /// [MaterialApp] and [Scaffold]. The [label] and [clipBehavior] arguments must /// not be null. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// Chip( @@ -665,7 +665,7 @@ class Chip extends StatelessWidget implements ChipAttributes, DeletableChipAttri /// * In a horizontally scrollable list, like a [ListView] whose /// scrollDirection is [Axis.horizontal]. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// InputChip( @@ -858,7 +858,7 @@ class InputChip extends StatelessWidget /// Requires one of its ancestors to be a [Material] widget. The [selected] and /// [label] arguments must not be null. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// class MyThreeOptions extends StatefulWidget { @@ -1038,7 +1038,7 @@ class ChoiceChip extends StatelessWidget /// /// Requires one of its ancestors to be a [Material] widget. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// class ActorFilterEntry { @@ -1263,7 +1263,7 @@ class FilterChip extends StatelessWidget /// /// Requires one of its ancestors to be a [Material] widget. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// ActionChip( diff --git a/packages/flutter/lib/src/material/chip_theme.dart b/packages/flutter/lib/src/material/chip_theme.dart index 27ece6b7ba8fd..7fa1217a8d6e8 100644 --- a/packages/flutter/lib/src/material/chip_theme.dart +++ b/packages/flutter/lib/src/material/chip_theme.dart @@ -62,7 +62,7 @@ class ChipTheme extends InheritedTheme { /// Defaults to the ambient [ThemeData.chipTheme] if there is no /// [ChipTheme] in the given build context. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// class Spaceship extends StatelessWidget { @@ -120,7 +120,7 @@ class ChipTheme extends InheritedTheme { /// you get from [ChipTheme.of], or create an entirely new one with /// [ChipThemeData..fromDefaults]. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// class CarColor extends StatefulWidget { diff --git a/packages/flutter/lib/src/material/circle_avatar.dart b/packages/flutter/lib/src/material/circle_avatar.dart index 5fe9b600c44a1..7d5cb992b955b 100644 --- a/packages/flutter/lib/src/material/circle_avatar.dart +++ b/packages/flutter/lib/src/material/circle_avatar.dart @@ -17,7 +17,7 @@ import 'theme_data.dart'; /// such an image, the user's initials. A given user's initials should /// always be paired with the same background color, for consistency. /// -/// {@tool sample} +/// {@tool snippet} /// /// If the avatar is to have an image, the image should be specified in the /// [backgroundImage] property: @@ -31,7 +31,7 @@ import 'theme_data.dart'; /// /// The image will be cropped to have a circle shape. /// -/// {@tool sample} +/// {@tool snippet} /// /// If the avatar is to just have the user's initials, they are typically /// provided using a [Text] widget as the [child] and a [backgroundColor]: diff --git a/packages/flutter/lib/src/material/colors.dart b/packages/flutter/lib/src/material/colors.dart index bd141a2737071..d23ebc2dc4ddf 100644 --- a/packages/flutter/lib/src/material/colors.dart +++ b/packages/flutter/lib/src/material/colors.dart @@ -104,7 +104,7 @@ class MaterialAccentColor extends ColorSwatch { /// In addition, a series of blacks and whites with common opacities are /// available. For example, [black54] is a pure black with 54% opacity. /// -/// {@tool sample} +/// {@tool snippet} /// /// To select a specific color from one of the swatches, index into the swatch /// using an integer for the specific color desired, as follows: @@ -113,7 +113,7 @@ class MaterialAccentColor extends ColorSwatch { /// Color selection = Colors.green[400]; // Selects a mid-range green. /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// Each [ColorSwatch] constant is a color and can used directly. For example: /// @@ -428,7 +428,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pink.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pinkAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -472,7 +472,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pink.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pinkAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -510,7 +510,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purple.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purpleAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -554,7 +554,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purple.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.purpleAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -592,7 +592,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pink.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pinkAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -636,7 +636,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pink.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.pinkAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -674,7 +674,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigo.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigoAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -718,7 +718,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigo.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.indigoAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -756,7 +756,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurple.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurpleAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -800,7 +800,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurple.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepPurpleAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -840,7 +840,7 @@ class Colors { /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blueGrey.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -884,7 +884,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightBlue.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lightBlueAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -922,7 +922,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyan.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyanAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -966,7 +966,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyan.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyanAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1006,7 +1006,7 @@ class Colors { /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.blueGrey.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1050,7 +1050,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.teal.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.tealAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1088,7 +1088,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyan.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyanAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1132,7 +1132,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyan.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.cyanAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1173,7 +1173,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lime.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.limeAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1220,7 +1220,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lime.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.limeAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1258,7 +1258,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lime.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.limeAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1302,7 +1302,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.lime.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.limeAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1340,7 +1340,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellow.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellowAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1384,7 +1384,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellow.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.yellowAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1422,7 +1422,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amber.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amberAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1466,7 +1466,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amber.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.amberAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1504,7 +1504,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orange.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orangeAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1548,7 +1548,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orange.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.orangeAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1588,7 +1588,7 @@ class Colors { /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.brown.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1632,7 +1632,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepOrange.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.deepOrangeAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1672,7 +1672,7 @@ class Colors { /// /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.brown.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1716,7 +1716,7 @@ class Colors { /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.red.png) /// ![](https://flutter.github.io/assets-for-api-docs/assets/material/Colors.redAccent.png) /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1753,7 +1753,7 @@ class Colors { /// /// This swatch has no corresponding accent color and swatch. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1800,7 +1800,7 @@ class Colors { /// used for raised button while pressed in light themes, and 850 is used for /// the background color of the dark theme. See [ThemeData.brightness]. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( @@ -1848,7 +1848,7 @@ class Colors { /// /// This swatch has no corresponding accent swatch. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Icon( diff --git a/packages/flutter/lib/src/material/data_table.dart b/packages/flutter/lib/src/material/data_table.dart index b224aa121c32c..8451aeb2947e8 100644 --- a/packages/flutter/lib/src/material/data_table.dart +++ b/packages/flutter/lib/src/material/data_table.dart @@ -225,7 +225,7 @@ class DataCell { /// [PaginatedDataTable] which automatically splits the data into /// multiple pages. /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This sample shows how to display a [DataTable] with three columns: name, age, and /// role. The columns are defined by three [DataColumn] objects. The table diff --git a/packages/flutter/lib/src/material/date_picker.dart b/packages/flutter/lib/src/material/date_picker.dart index ca22129ccf26b..8a17d2db7e424 100644 --- a/packages/flutter/lib/src/material/date_picker.dart +++ b/packages/flutter/lib/src/material/date_picker.dart @@ -1094,7 +1094,7 @@ typedef SelectableDayPredicate = bool Function(DateTime day); /// /// {@animation 350 622 https://flutter.github.io/assets-for-api-docs/assets/material/show_date_picker.mp4} /// -/// {@tool sample} +/// {@tool snippet} /// Show a date picker with the dark theme. /// /// ```dart diff --git a/packages/flutter/lib/src/material/dialog.dart b/packages/flutter/lib/src/material/dialog.dart index d5ecf21644b8b..077c0a72acded 100644 --- a/packages/flutter/lib/src/material/dialog.dart +++ b/packages/flutter/lib/src/material/dialog.dart @@ -161,7 +161,7 @@ class Dialog extends StatelessWidget { /// /// {@animation 350 622 https://flutter.github.io/assets-for-api-docs/assets/material/alert_dialog.mp4} /// -/// {@tool sample} +/// {@tool snippet} /// /// This snippet shows a method in a [State] which, when called, displays a dialog box /// and returns a [Future] that completes when the dialog is dismissed. @@ -301,7 +301,7 @@ class AlertDialog extends StatelessWidget { /// [buttonPadding] may contribute to the padding on the edges of [actions] as /// well. /// - /// {@tool sample} + /// {@tool snippet} /// This is an example of a set of actions aligned with the content widget. /// ```dart /// AlertDialog( @@ -488,7 +488,7 @@ class AlertDialog extends StatelessWidget { /// title and the first option, and 24 pixels of spacing between the last option /// and the bottom of the dialog. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// SimpleDialogOption( @@ -555,7 +555,7 @@ class SimpleDialogOption extends StatelessWidget { /// /// {@animation 350 622 https://flutter.github.io/assets-for-api-docs/assets/material/simple_dialog.mp4} /// -/// {@tool sample} +/// {@tool snippet} /// /// In this example, the user is asked to select between two options. These /// options are represented as an enum. The [showDialog] method here returns diff --git a/packages/flutter/lib/src/material/divider.dart b/packages/flutter/lib/src/material/divider.dart index be829a79bda82..3879e2943639b 100644 --- a/packages/flutter/lib/src/material/divider.dart +++ b/packages/flutter/lib/src/material/divider.dart @@ -22,7 +22,7 @@ import 'theme.dart'; /// The box's total height is controlled by [height]. The appropriate /// padding is automatically computed from the height. /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This sample shows how to display a Divider between an orange and blue box /// inside a column. The Divider is 20 logical pixels in height and contains a @@ -124,7 +124,7 @@ class Divider extends StatelessWidget { /// If this is null, then the [DividerThemeData.color] is used. If that is /// also null, then [ThemeData.dividerColor] is used. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Divider( @@ -145,7 +145,7 @@ class Divider extends StatelessWidget { /// If [context] is null, the default color of [BorderSide] is used and the /// default width of 0.0 is used. /// - /// {@tool sample} + /// {@tool snippet} /// /// This example uses this method to create a box that has a divider above and /// below it. This is sometimes useful with lists, for instance, to separate a @@ -274,7 +274,7 @@ class VerticalDivider extends StatelessWidget { /// If this is null, then the [DividerThemeData.color] is used. If that is /// also null, then [ThemeData.dividerColor] is used. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Divider( diff --git a/packages/flutter/lib/src/material/drawer.dart b/packages/flutter/lib/src/material/drawer.dart index ff292d8a9af50..046feed18910a 100644 --- a/packages/flutter/lib/src/material/drawer.dart +++ b/packages/flutter/lib/src/material/drawer.dart @@ -61,7 +61,7 @@ const Duration _kBaseSettleDuration = Duration(milliseconds: 246); /// /// {@animation 350 622 https://flutter.github.io/assets-for-api-docs/assets/material/drawer.mp4} /// -/// {@tool sample} +/// {@tool snippet} /// This example shows how to create a [Scaffold] that contains an [AppBar] and /// a [Drawer]. A user taps the "menu" icon in the [AppBar] to open the /// [Drawer]. The [Drawer] displays four items: A header and three menu items. diff --git a/packages/flutter/lib/src/material/dropdown.dart b/packages/flutter/lib/src/material/dropdown.dart index 9b23a687f1d95..293d3a7bb9154 100644 --- a/packages/flutter/lib/src/material/dropdown.dart +++ b/packages/flutter/lib/src/material/dropdown.dart @@ -707,7 +707,7 @@ class DropdownButtonHideUnderline extends InheritedWidget { /// dropdown's value. It should also call [State.setState] to rebuild the /// dropdown with the new value. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// This sample shows a `DropdownButton` with a large arrow icon, /// purple text style, and bold purple underline, whose value is one of "One", @@ -865,7 +865,7 @@ class DropdownButton extends StatefulWidget { /// from the list corresponds to the [DropdownMenuItem] of the same index /// in [items]. /// - /// {@tool snippet --template=stateful_widget_scaffold} + /// {@tool sample --template=stateful_widget_scaffold} /// /// This sample shows a `DropdownButton` with a button with [Text] that /// corresponds to but is unique from [DropdownMenuItem]. @@ -916,7 +916,7 @@ class DropdownButton extends StatefulWidget { /// To use a separate text style for selected item when it's displayed within /// the dropdown button,, consider using [selectedItemBuilder]. /// - /// {@tool snippet --template=stateful_widget_scaffold} + /// {@tool sample --template=stateful_widget_scaffold} /// /// This sample shows a `DropdownButton` with a dropdown button text style /// that is different than its menu items. diff --git a/packages/flutter/lib/src/material/expansion_panel.dart b/packages/flutter/lib/src/material/expansion_panel.dart index 8236c6e263904..c9e794e3499cd 100644 --- a/packages/flutter/lib/src/material/expansion_panel.dart +++ b/packages/flutter/lib/src/material/expansion_panel.dart @@ -140,7 +140,7 @@ class ExpansionPanelRadio extends ExpansionPanel { /// Note that [expansionCallback] behaves differently for [ExpansionPanelList] /// and [ExpansionPanelList.radio]. /// -/// {@tool snippet --template=stateful_widget_scaffold} +/// {@tool sample --template=stateful_widget_scaffold} /// /// Here is a simple example of how to implement ExpansionPanelList. /// @@ -242,7 +242,7 @@ class ExpansionPanelList extends StatefulWidget { /// arguments must not be null. The [children] objects must be instances /// of [ExpansionPanelRadio]. /// - /// {@tool snippet --template=stateful_widget_scaffold} + /// {@tool sample --template=stateful_widget_scaffold} /// /// Here is a simple example of how to implement ExpansionPanelList.radio. /// diff --git a/packages/flutter/lib/src/material/feedback.dart b/packages/flutter/lib/src/material/feedback.dart index c1891a627ae90..61f74e9766d18 100644 --- a/packages/flutter/lib/src/material/feedback.dart +++ b/packages/flutter/lib/src/material/feedback.dart @@ -28,7 +28,7 @@ import 'theme.dart'; /// [StatelessWidget.build] method or from a [State]'s methods as you have to /// provide a [BuildContext]. /// -/// {@tool sample} +/// {@tool snippet} /// /// To trigger platform-specific feedback before executing the actual callback: /// @@ -53,7 +53,7 @@ import 'theme.dart'; /// } /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// Alternatively, you can also call [forTap] or [forLongPress] directly within /// your tap or long press handler: diff --git a/packages/flutter/lib/src/material/flat_button.dart b/packages/flutter/lib/src/material/flat_button.dart index 40b5d2b86bb28..2c580d4a0e2e9 100644 --- a/packages/flutter/lib/src/material/flat_button.dart +++ b/packages/flutter/lib/src/material/flat_button.dart @@ -40,7 +40,7 @@ import 'theme_data.dart'; /// /// The [clipBehavior] argument must not be null. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows a simple [FlatButton]. /// @@ -58,7 +58,7 @@ import 'theme_data.dart'; /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows a [FlatButton] that is normally white-on-blue, /// with splashes rendered in a different shade of blue. diff --git a/packages/flutter/lib/src/material/flexible_space_bar.dart b/packages/flutter/lib/src/material/flexible_space_bar.dart index 9ac1ed997735c..a53890bf9e96e 100644 --- a/packages/flutter/lib/src/material/flexible_space_bar.dart +++ b/packages/flutter/lib/src/material/flexible_space_bar.dart @@ -50,7 +50,7 @@ enum StretchMode { /// [FlexibleSpaceBar.createSettings], to convey sizing information down to the /// [FlexibleSpaceBar]. /// -/// {@tool snippet --template=freeform} +/// {@tool sample --template=freeform} /// This sample application demonstrates the different features of the /// [FlexibleSpaceBar] when used in a [SliverAppBar]. This app bar is configured /// to stretch into the overscroll space, and uses the diff --git a/packages/flutter/lib/src/material/floating_action_button.dart b/packages/flutter/lib/src/material/floating_action_button.dart index 1a9e40ae4927c..e128992095f33 100644 --- a/packages/flutter/lib/src/material/floating_action_button.dart +++ b/packages/flutter/lib/src/material/floating_action_button.dart @@ -57,7 +57,7 @@ class _DefaultHeroTag { /// disabled. Consider changing the [backgroundColor] if disabling the floating /// action button. /// -/// {@tool snippet --template=stateless_widget_material} +/// {@tool sample --template=stateless_widget_material} /// This example shows how to display a [FloatingActionButton] in a /// [Scaffold], with a pink [backgroundColor] and a thumbs up [Icon]. /// @@ -84,7 +84,7 @@ class _DefaultHeroTag { /// ``` /// {@end-tool} /// -/// {@tool snippet --template=stateless_widget_material} +/// {@tool sample --template=stateless_widget_material} /// This example shows how to make an extended [FloatingActionButton] in a /// [Scaffold], with a pink [backgroundColor], a thumbs up [Icon] and a /// [Text] label that reads "Approve". diff --git a/packages/flutter/lib/src/material/icon_button.dart b/packages/flutter/lib/src/material/icon_button.dart index fc7a4e88c2949..6b3ce2fa69f5d 100644 --- a/packages/flutter/lib/src/material/icon_button.dart +++ b/packages/flutter/lib/src/material/icon_button.dart @@ -39,7 +39,7 @@ const double _kMinButtonSize = kMinInteractiveDimension; /// requirements in the Material Design specification. The [alignment] controls /// how the icon itself is positioned within the hit region. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// This sample shows an `IconButton` that uses the Material icon "volume_up" to /// increase the volume. @@ -83,7 +83,7 @@ const double _kMinButtonSize = kMinInteractiveDimension; /// the underlying [Material] along with the splash and highlight /// [InkResponse] contributed by descendant widgets. /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// In this sample the icon button's background color is defined with an [Ink] /// widget whose child is an [IconButton]. The icon button's filled background diff --git a/packages/flutter/lib/src/material/icons.dart b/packages/flutter/lib/src/material/icons.dart index a943d44c51dcd..b857c6be4679b 100644 --- a/packages/flutter/lib/src/material/icons.dart +++ b/packages/flutter/lib/src/material/icons.dart @@ -21,7 +21,7 @@ import 'package:flutter/widgets.dart'; /// uses-material-design: true /// ``` /// -/// {@tool sample} +/// {@tool snippet} /// This example shows how to create a [Row] of [Icon]s in different colors and /// sizes. The first [Icon] uses a [Icon.semanticLabel] to announce in accessibility /// modes like TalkBack and VoiceOver. diff --git a/packages/flutter/lib/src/material/ink_decoration.dart b/packages/flutter/lib/src/material/ink_decoration.dart index 57c58609f7b88..cf4d6412db7bc 100644 --- a/packages/flutter/lib/src/material/ink_decoration.dart +++ b/packages/flutter/lib/src/material/ink_decoration.dart @@ -44,7 +44,7 @@ import 'material.dart'; /// generally speaking will match the order they are given in the widget tree, /// but this order may appear to be somewhat random in more dynamic situations. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows how a [Material] widget can have a yellow rectangle drawn /// on it using [Ink], while still having ink effects over the yellow rectangle: @@ -68,7 +68,7 @@ import 'material.dart'; /// ) /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// The following example shows how an image can be printed on a [Material] /// widget with an [InkWell] above it: diff --git a/packages/flutter/lib/src/material/ink_well.dart b/packages/flutter/lib/src/material/ink_well.dart index 4fb38dbbac118..551e6c1e5da9f 100644 --- a/packages/flutter/lib/src/material/ink_well.dart +++ b/packages/flutter/lib/src/material/ink_well.dart @@ -847,7 +847,7 @@ class _InkResponseState extends State with AutomaticKe /// /// An example of this situation is as follows: /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// Tap the container to cause it to grow. Then, tap it again and hold before /// the widget reaches its maximum size to observe the clipped ink splash. diff --git a/packages/flutter/lib/src/material/input_decorator.dart b/packages/flutter/lib/src/material/input_decorator.dart index e868c6a69ef05..f9627d41befd6 100644 --- a/packages/flutter/lib/src/material/input_decorator.dart +++ b/packages/flutter/lib/src/material/input_decorator.dart @@ -2305,7 +2305,7 @@ class _InputDecoratorState extends State with TickerProviderStat /// to describe their decoration. (In fact, this class is merely the /// configuration of an [InputDecorator], which does all the heavy lifting.) /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This sample shows how to style a `TextField` using an `InputDecorator`. The /// TextField displays a "send message" icon to the left of the input area, @@ -2330,7 +2330,7 @@ class _InputDecoratorState extends State with TickerProviderStat /// ``` /// {@end-tool} /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This sample shows how to style a "collapsed" `TextField` using an /// `InputDecorator`. The collapsed `TextField` surrounds the hint text and @@ -2350,7 +2350,7 @@ class _InputDecoratorState extends State with TickerProviderStat /// ``` /// {@end-tool} /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This sample shows how to create a `TextField` with hint text, a red border /// on all sides, and an error message. To display a red border and error @@ -2371,7 +2371,7 @@ class _InputDecoratorState extends State with TickerProviderStat /// ``` /// {@end-tool} /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This sample shows how to style a `TextField` with a round border and /// additional text before and after the input area. It displays "Prefix" before diff --git a/packages/flutter/lib/src/material/list_tile.dart b/packages/flutter/lib/src/material/list_tile.dart index 80eadc38d629e..13bb1e6a41c41 100644 --- a/packages/flutter/lib/src/material/list_tile.dart +++ b/packages/flutter/lib/src/material/list_tile.dart @@ -195,7 +195,7 @@ enum ListTileControlAffinity { /// /// Requires one of its ancestors to be a [Material] widget. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example uses a [ListView] to demonstrate different configurations of /// [ListTile]s in [Card]s. @@ -254,7 +254,7 @@ enum ListTileControlAffinity { /// ) /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// Tiles can be much more elaborate. Here is a tile which can be tapped, but /// which is disabled when the `_act` variable is not 2. When the tile is @@ -285,7 +285,7 @@ enum ListTileControlAffinity { /// that are large enough, but it is up to the developer to ensure that /// their widgets follow the Material spec. /// -/// {@tool sample} +/// {@tool snippet} /// /// Here is an example of a one-line, non-[dense] ListTile with a /// tappable leading widget that adheres to accessibility requirements and @@ -317,7 +317,7 @@ enum ListTileControlAffinity { /// you're looking for, it's easy to create custom list items with a /// combination of other widgets, such as [Row]s and [Column]s. /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// Here is an example of a custom list item that resembles a Youtube related /// video list item created with [Expanded] and [Container] widgets. @@ -438,7 +438,7 @@ enum ListTileControlAffinity { /// ``` /// {@end-tool} /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// Here is an example of an article list item with multiline titles and /// subtitles. It utilizes [Row]s and [Column]s, as well as [Expanded] and diff --git a/packages/flutter/lib/src/material/material_state.dart b/packages/flutter/lib/src/material/material_state.dart index ec29930ce4bf7..9bc53c5e2d9fb 100644 --- a/packages/flutter/lib/src/material/material_state.dart +++ b/packages/flutter/lib/src/material/material_state.dart @@ -85,7 +85,7 @@ typedef MaterialPropertyResolver = T Function(Set states); /// This should only be used as parameters when they are documented to take /// [MaterialStateColor], otherwise only the default state will be used. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows how you could pass a `MaterialStateColor` to `FlatButton.textColor`. /// Here, the text color will be `Colors.blue[900]` when the button is being @@ -119,7 +119,7 @@ abstract class MaterialStateColor extends Color implements MaterialStateProperty /// to provide a `defaultValue` to the super constructor, so that we can know /// at compile-time what the value of the default [Color] is. /// - /// {@tool sample} + /// {@tool snippet} /// /// In this next example, we see how you can create a `MaterialStateColor` by /// extending the abstract class and overriding the `resolve` method. diff --git a/packages/flutter/lib/src/material/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart index a04a8ebc329e1..1b61e3925f69e 100644 --- a/packages/flutter/lib/src/material/popup_menu.dart +++ b/packages/flutter/lib/src/material/popup_menu.dart @@ -178,7 +178,7 @@ class _RenderMenuItem extends RenderShiftedBox { /// [PopupMenuItem] is kMinInteractiveDimension pixels high. If you use a widget /// with a different height, it must be specified in the [height] property. /// -/// {@tool sample} +/// {@tool snippet} /// /// Here, a [Text] widget is used with a popup menu item. The `WhyFarther` type /// is an enum, not shown here. @@ -339,7 +339,7 @@ class PopupMenuItemState> extends State { /// layout uses [ListTile]; the checkmark is an [Icons.done] icon, shown in the /// [ListTile.leading] position. /// -/// {@tool sample} +/// {@tool snippet} /// /// Suppose a `Commands` enum exists that lists the possible commands from a /// particular popup menu, including `Commands.heroAndScholar` and @@ -885,7 +885,7 @@ typedef PopupMenuItemBuilder = List> Function(BuildContext /// If both are null, then a standard overflow icon is created (depending on the /// platform). /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows a menu with four items, selecting between an enum's /// values and setting a `_selection` field based on the selection. diff --git a/packages/flutter/lib/src/material/radio.dart b/packages/flutter/lib/src/material/radio.dart index 5dfb5215e193f..64845d0737659 100644 --- a/packages/flutter/lib/src/material/radio.dart +++ b/packages/flutter/lib/src/material/radio.dart @@ -29,7 +29,7 @@ const double _kInnerRadius = 4.5; /// will respond to [onChanged] by calling [State.setState] to update the /// radio button's [groupValue]. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// Here is an example of Radio widgets wrapped in ListTiles, which is similar /// to what you could get with the RadioListTile widget. diff --git a/packages/flutter/lib/src/material/radio_list_tile.dart b/packages/flutter/lib/src/material/radio_list_tile.dart index c096321c0a5fc..cfc01247ef665 100644 --- a/packages/flutter/lib/src/material/radio_list_tile.dart +++ b/packages/flutter/lib/src/material/radio_list_tile.dart @@ -40,7 +40,7 @@ import 'theme_data.dart'; /// To show the [RadioListTile] as disabled, pass null as the [onChanged] /// callback. /// -/// {@tool snippet --template=stateful_widget_scaffold} +/// {@tool sample --template=stateful_widget_scaffold} /// /// ![RadioListTile sample](https://flutter.github.io/assets-for-api-docs/assets/material/radio_list_tile.png) /// @@ -92,7 +92,7 @@ import 'theme_data.dart'; /// into one. Therefore, it may be necessary to create a custom radio tile /// widget to accommodate similar use cases. /// -/// {@tool snippet --template=stateful_widget_scaffold} +/// {@tool sample --template=stateful_widget_scaffold} /// /// ![Radio list tile semantics sample](https://flutter.github.io/assets-for-api-docs/assets/material/radio_list_tile_semantics.png) /// @@ -196,7 +196,7 @@ import 'theme_data.dart'; /// combining [Radio] with other widgets, such as [Text], [Padding] and /// [InkWell]. /// -/// {@tool snippet --template=stateful_widget_scaffold} +/// {@tool sample --template=stateful_widget_scaffold} /// /// ![Custom radio list tile sample](https://flutter.github.io/assets-for-api-docs/assets/material/radio_list_tile_custom.png) /// diff --git a/packages/flutter/lib/src/material/raised_button.dart b/packages/flutter/lib/src/material/raised_button.dart index 24dc533a42581..2e2f4debd969d 100644 --- a/packages/flutter/lib/src/material/raised_button.dart +++ b/packages/flutter/lib/src/material/raised_button.dart @@ -31,7 +31,7 @@ import 'theme_data.dart'; /// Raised buttons have a minimum size of 88.0 by 36.0 which can be overridden /// with [ButtonTheme]. /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// This sample shows how to render a disabled RaisedButton, an enabled RaisedButton /// and lastly a RaisedButton with gradient background. diff --git a/packages/flutter/lib/src/material/range_slider.dart b/packages/flutter/lib/src/material/range_slider.dart index cc4589e3364f4..58113ec73d8d1 100644 --- a/packages/flutter/lib/src/material/range_slider.dart +++ b/packages/flutter/lib/src/material/range_slider.dart @@ -155,7 +155,7 @@ class RangeSlider extends StatefulWidget { /// [StatefulWidget] using the [State.setState] method, so that the parent /// gets rebuilt; for example: /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// RangeSlider( @@ -187,7 +187,7 @@ class RangeSlider extends StatefulWidget { /// The values passed will be the last [values] that the slider had before the /// change began. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// RangeSlider( @@ -222,7 +222,7 @@ class RangeSlider extends StatefulWidget { /// [onChanged] for that). Rather, it should be used to know when the user has /// completed selecting a new [values] by ending a drag or a click. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// RangeSlider( @@ -310,7 +310,7 @@ class RangeSlider extends StatefulWidget { /// This is used by accessibility frameworks like TalkBack on Android to /// inform users what the currently selected value is with more context. /// - /// {@tool sample} + /// {@tool snippet} /// /// In the example below, a slider for currency values is configured to /// announce a value with a currency label. diff --git a/packages/flutter/lib/src/material/reorderable_list.dart b/packages/flutter/lib/src/material/reorderable_list.dart index 663644eb32461..2944b1adc03ba 100644 --- a/packages/flutter/lib/src/material/reorderable_list.dart +++ b/packages/flutter/lib/src/material/reorderable_list.dart @@ -27,7 +27,7 @@ import 'material_localizations.dart'; /// /// {@youtube 560 315 https://www.youtube.com/watch?v=3fB1mxOsqJE} /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// final List backingList = [/* ... */]; diff --git a/packages/flutter/lib/src/material/scaffold.dart b/packages/flutter/lib/src/material/scaffold.dart index e1b86781f3a32..48ca12dcbb6c8 100644 --- a/packages/flutter/lib/src/material/scaffold.dart +++ b/packages/flutter/lib/src/material/scaffold.dart @@ -803,7 +803,7 @@ class _FloatingActionButtonTransitionState extends State<_FloatingActionButtonTr /// [ScaffoldState] for the current [BuildContext] via [Scaffold.of] and use the /// [ScaffoldState.showSnackBar] and [ScaffoldState.showBottomSheet] functions. /// -/// {@tool snippet --template=stateful_widget_material} +/// {@tool sample --template=stateful_widget_material} /// This example shows a [Scaffold] with a [body] and [FloatingActionButton]. /// The [body] is a [Text] placed in a [Center] in order to center the text /// within the [Scaffold]. The [FloatingActionButton] is connected to a @@ -832,7 +832,7 @@ class _FloatingActionButtonTransitionState extends State<_FloatingActionButtonTr /// ``` /// {@end-tool} /// -/// {@tool snippet --template=stateful_widget_material} +/// {@tool sample --template=stateful_widget_material} /// This example shows a [Scaffold] with a blueGrey [backgroundColor], [body] /// and [FloatingActionButton]. The [body] is a [Text] placed in a [Center] in /// order to center the text within the [Scaffold]. The [FloatingActionButton] @@ -862,7 +862,7 @@ class _FloatingActionButtonTransitionState extends State<_FloatingActionButtonTr /// ``` /// {@end-tool} /// -/// {@tool snippet --template=stateful_widget_material} +/// {@tool sample --template=stateful_widget_material} /// This example shows a [Scaffold] with an [AppBar], a [BottomAppBar] and a /// [FloatingActionButton]. The [body] is a [Text] placed in a [Center] in order /// to center the text within the [Scaffold]. The [FloatingActionButton] is @@ -932,7 +932,7 @@ class _FloatingActionButtonTransitionState extends State<_FloatingActionButtonTr /// scaffold with a differently titled AppBar. It would be better to add a /// listener to the [TabController] that updates the AppBar. /// -/// {@tool sample} +/// {@tool snippet} /// Add a listener to the app's tab controller so that the [AppBar] title of the /// app's one and only scaffold is reset each time a new tab is selected. /// @@ -1097,7 +1097,7 @@ class Scaffold extends StatefulWidget { /// To open the drawer programmatically, use the [ScaffoldState.openDrawer] /// function. /// - /// {@tool snippet --template=stateful_widget_material} + /// {@tool sample --template=stateful_widget_material} /// To disable the drawer edge swipe, set the [Scaffold.drawerEdgeWidth] /// to 0. Then, use [ScaffoldState.openDrawer] to open the drawer. /// @@ -1138,7 +1138,7 @@ class Scaffold extends StatefulWidget { /// To open the drawer programmatically, use the [ScaffoldState.openEndDrawer] /// function. /// - /// {@tool snippet --template=stateful_widget_material} + /// {@tool sample --template=stateful_widget_material} /// To disable the drawer edge swipe, set the [Scaffold.drawerEdgeWidth] /// to 0. Then, use [ScaffoldState.openEndDrawer] to open the drawer. /// @@ -1267,7 +1267,7 @@ class Scaffold extends StatefulWidget { /// The state from the closest instance of this class that encloses the given context. /// - /// {@tool snippet --template=freeform} + /// {@tool sample --template=freeform} /// Typical usage of the [Scaffold.of] function is to call it from within the /// `build` method of a child of a [Scaffold]. /// @@ -1320,7 +1320,7 @@ class Scaffold extends StatefulWidget { /// ``` /// {@end-tool} /// - /// {@tool snippet --template=stateless_widget_material} + /// {@tool sample --template=stateless_widget_material} /// When the [Scaffold] is actually created in the same `build` function, the /// `context` argument to the `build` function can't be used to find the /// [Scaffold] (since it's "above" the widget being returned in the widget @@ -1877,7 +1877,7 @@ class ScaffoldState extends State with TickerProviderStateMixin { /// /// {@animation 350 622 https://flutter.github.io/assets-for-api-docs/assets/material/show_bottom_sheet.mp4} /// - /// {@tool snippet --template=stateless_widget_scaffold} + /// {@tool sample --template=stateless_widget_scaffold} /// /// This example demonstrates how to use `showBottomSheet` to display a /// bottom sheet when a user taps a button. It also demonstrates how to diff --git a/packages/flutter/lib/src/material/search.dart b/packages/flutter/lib/src/material/search.dart index b234ce85d3712..9ddf0ae220138 100644 --- a/packages/flutter/lib/src/material/search.dart +++ b/packages/flutter/lib/src/material/search.dart @@ -92,7 +92,7 @@ abstract class SearchDelegate { /// Constructor to be called by subclasses which may specify [searchFieldLabel], [keyboardType] and/or /// [textInputAction]. /// - /// {@tool sample} + /// {@tool snippet} /// ```dart /// class CustomSearchHintDelegate extends SearchDelegate { /// CustomSearchHintDelegate({ diff --git a/packages/flutter/lib/src/material/selectable_text.dart b/packages/flutter/lib/src/material/selectable_text.dart index 44253c554c12b..0549207d29e29 100644 --- a/packages/flutter/lib/src/material/selectable_text.dart +++ b/packages/flutter/lib/src/material/selectable_text.dart @@ -143,7 +143,7 @@ class _SelectableTextSelectionGestureDetectorBuilder extends TextSelectionGestur /// behavior is useful, for example, to make the text bold while using the /// default font family and size. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// SelectableText( @@ -159,7 +159,7 @@ class _SelectableTextSelectionGestureDetectorBuilder extends TextSelectionGestur /// that follows displays "Hello beautiful world" with different styles /// for each word. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// const SelectableText.rich( diff --git a/packages/flutter/lib/src/material/slider.dart b/packages/flutter/lib/src/material/slider.dart index 17ec4a85db830..d1f158180fdc8 100644 --- a/packages/flutter/lib/src/material/slider.dart +++ b/packages/flutter/lib/src/material/slider.dart @@ -180,7 +180,7 @@ class Slider extends StatefulWidget { /// [StatefulWidget] using the [State.setState] method, so that the parent /// gets rebuilt; for example: /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Slider( @@ -215,7 +215,7 @@ class Slider extends StatefulWidget { /// The value passed will be the last [value] that the slider had before the /// change began. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Slider( @@ -248,7 +248,7 @@ class Slider extends StatefulWidget { /// [onChanged] for that), but rather to know when the user has completed /// selecting a new [value] by ending a drag or a click. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// Slider( @@ -348,7 +348,7 @@ class Slider extends StatefulWidget { /// This is used by accessibility frameworks like TalkBack on Android to /// inform users what the currently selected value is with more context. /// - /// {@tool sample} + /// {@tool snippet} /// /// In the example below, a slider for currency values is configured to /// announce a value with a currency label. diff --git a/packages/flutter/lib/src/material/slider_theme.dart b/packages/flutter/lib/src/material/slider_theme.dart index a933dc4347f98..6f7e3dcd5300e 100644 --- a/packages/flutter/lib/src/material/slider_theme.dart +++ b/packages/flutter/lib/src/material/slider_theme.dart @@ -155,7 +155,7 @@ class SliderTheme extends InheritedTheme { /// Defaults to the ambient [ThemeData.sliderTheme] if there is no /// [SliderTheme] in the given build context. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// class Launch extends StatefulWidget { @@ -316,7 +316,7 @@ class SliderThemeData extends Diagnosticable { /// [copyWith] on the one you get from [SliderTheme.of], or create an /// entirely new one with [SliderThemeData.fromPrimaryColors]. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// class Blissful extends StatefulWidget { diff --git a/packages/flutter/lib/src/material/stepper.dart b/packages/flutter/lib/src/material/stepper.dart index db9875ea70cbc..8e9013d3a26cf 100644 --- a/packages/flutter/lib/src/material/stepper.dart +++ b/packages/flutter/lib/src/material/stepper.dart @@ -192,7 +192,7 @@ class Stepper extends StatefulWidget { /// This callback which takes in a context and two functions,[onStepContinue] /// and [onStepCancel]. These can be used to control the stepper. /// - /// {@tool snippet --template=stateless_widget_scaffold} + /// {@tool sample --template=stateless_widget_scaffold} /// Creates a stepper control with custom buttons. /// /// ```dart diff --git a/packages/flutter/lib/src/material/switch_list_tile.dart b/packages/flutter/lib/src/material/switch_list_tile.dart index 7be5dc3a15141..9f8215bd06aa3 100644 --- a/packages/flutter/lib/src/material/switch_list_tile.dart +++ b/packages/flutter/lib/src/material/switch_list_tile.dart @@ -46,7 +46,7 @@ enum _SwitchListTileType { material, adaptive } /// To show the [SwitchListTile] as disabled, pass null as the [onChanged] /// callback. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// ![SwitchListTile sample](https://flutter.github.io/assets-for-api-docs/assets/material/switch_list_tile.png) /// @@ -85,7 +85,7 @@ enum _SwitchListTileType { material, adaptive } /// into one. Therefore, it may be necessary to create a custom radio tile /// widget to accommodate similar use cases. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// ![Switch list tile semantics sample](https://flutter.github.io/assets-for-api-docs/assets/material/switch_list_tile_semantics.png) /// @@ -169,7 +169,7 @@ enum _SwitchListTileType { material, adaptive } /// combining [Switch] with other widgets, such as [Text], [Padding] and /// [InkWell]. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// /// ![Custom switch list tile sample](https://flutter.github.io/assets-for-api-docs/assets/material/switch_list_tile_custom.png) /// diff --git a/packages/flutter/lib/src/material/tab_controller.dart b/packages/flutter/lib/src/material/tab_controller.dart index c1f682301555a..23ec1b4194ff2 100644 --- a/packages/flutter/lib/src/material/tab_controller.dart +++ b/packages/flutter/lib/src/material/tab_controller.dart @@ -26,7 +26,7 @@ import 'constants.dart'; /// /// {@animation 700 540 https://flutter.github.io/assets-for-api-docs/assets/material/tabs.mp4} /// -/// {@tool sample} +/// {@tool snippet} /// /// This widget introduces a [Scaffold] with an [AppBar] and a [TabBar]. /// @@ -339,7 +339,7 @@ class DefaultTabController extends StatefulWidget { /// The closest instance of this class that encloses the given context. /// - /// {@tool sample} + /// {@tool snippet} /// Typical usage is as follows: /// /// ```dart diff --git a/packages/flutter/lib/src/material/text_field.dart b/packages/flutter/lib/src/material/text_field.dart index 45e14d4b6749c..36643f9e41009 100644 --- a/packages/flutter/lib/src/material/text_field.dart +++ b/packages/flutter/lib/src/material/text_field.dart @@ -149,7 +149,7 @@ class _TextFieldSelectionGestureDetectorBuilder extends TextSelectionGestureDete /// Remember to [dispose] of the [TextEditingController] when it is no longer needed. /// This will ensure we discard any resources used by the object. /// -/// {@tool sample} +/// {@tool snippet} /// This example shows how to create a [TextField] that will obscure input. The /// [InputDecoration] surrounds the field in a border using [OutlineInputBorder] /// and adds a label. @@ -654,7 +654,7 @@ class TextField extends StatefulWidget { /// accessibility, but it also needs to be accessible itself. For example, /// if returning a Text widget, set the [semanticsLabel] property. /// - /// {@tool sample} + /// {@tool snippet} /// ```dart /// Widget counter( /// BuildContext context, diff --git a/packages/flutter/lib/src/material/text_form_field.dart b/packages/flutter/lib/src/material/text_form_field.dart index d4ea4bc058cc7..1c9c411a29c87 100644 --- a/packages/flutter/lib/src/material/text_form_field.dart +++ b/packages/flutter/lib/src/material/text_form_field.dart @@ -36,7 +36,7 @@ export 'package:flutter/services.dart' show SmartQuotesType, SmartDashesType; /// /// For a documentation about the various parameters, see [TextField]. /// -/// {@tool sample} +/// {@tool snippet} /// /// Creates a [TextFormField] with an [InputDecoration] and validator function. /// diff --git a/packages/flutter/lib/src/material/text_theme.dart b/packages/flutter/lib/src/material/text_theme.dart index afa92bf43277d..13a4e89f78307 100644 --- a/packages/flutter/lib/src/material/text_theme.dart +++ b/packages/flutter/lib/src/material/text_theme.dart @@ -176,7 +176,7 @@ class TextTheme extends Diagnosticable { /// the typography styles in the material design specification, as a starting /// point. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// /// A Widget that sets the ambient theme's title text color for its @@ -260,7 +260,7 @@ class TextTheme extends Diagnosticable { /// [TextTheme] has only some fields defined, and you want to define the rest /// by merging it with a default theme. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// /// A Widget that sets the ambient theme's title text color for its diff --git a/packages/flutter/lib/src/material/theme_data.dart b/packages/flutter/lib/src/material/theme_data.dart index e151810bc7d7f..087a183cccf66 100644 --- a/packages/flutter/lib/src/material/theme_data.dart +++ b/packages/flutter/lib/src/material/theme_data.dart @@ -96,7 +96,7 @@ enum MaterialTapTargetSize { /// /// To obtain the current theme, use [Theme.of]. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample creates a [Theme] widget that stores the `ThemeData`. The /// `ThemeData` can be accessed by descendant Widgets that use the correct @@ -128,7 +128,7 @@ enum MaterialTapTargetSize { /// [MaterialApp]. The `ThemeData` will be used throughout the app to style /// material design widgets. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample creates a [MaterialApp] widget that stores `ThemeData` and /// passes the `ThemeData` to descendant widgets. The [AppBar] widget uses the @@ -588,7 +588,7 @@ class ThemeData extends Diagnosticable { /// forward we will be converting all the widget implementations to only use /// colors or colors derived from those in [ColorScheme]. /// - /// {@tool sample} + /// {@tool snippet} /// This example will set up an application to use the baseline Material /// Design light and dark themes. /// diff --git a/packages/flutter/lib/src/material/time.dart b/packages/flutter/lib/src/material/time.dart index 011895beb8101..c7e72431828b1 100644 --- a/packages/flutter/lib/src/material/time.dart +++ b/packages/flutter/lib/src/material/time.dart @@ -29,7 +29,7 @@ enum DayPeriod { /// minute or using [DateTime] object. /// Hours are specified between 0 and 23, as in a 24-hour clock. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// TimeOfDay now = TimeOfDay.now(); diff --git a/packages/flutter/lib/src/material/time_picker.dart b/packages/flutter/lib/src/material/time_picker.dart index d6ddd7030358c..24ab9c99318d8 100644 --- a/packages/flutter/lib/src/material/time_picker.dart +++ b/packages/flutter/lib/src/material/time_picker.dart @@ -1723,7 +1723,7 @@ class _TimePickerDialogState extends State<_TimePickerDialog> { /// The returned Future resolves to the time selected by the user when the user /// closes the dialog. If the user cancels the dialog, null is returned. /// -/// {@tool sample} +/// {@tool snippet} /// Show a dialog with [initialTime] equal to the current time. /// /// ```dart @@ -1741,7 +1741,7 @@ class _TimePickerDialogState extends State<_TimePickerDialog> { /// to add inherited widgets like [Localizations.override], /// [Directionality], or [MediaQuery]. /// -/// {@tool sample} +/// {@tool snippet} /// Show a dialog with the text direction overridden to be [TextDirection.rtl]. /// /// ```dart @@ -1758,7 +1758,7 @@ class _TimePickerDialogState extends State<_TimePickerDialog> { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// Show a dialog with time unconditionally displayed in 24 hour format. /// /// ```dart diff --git a/packages/flutter/lib/src/material/tooltip_theme.dart b/packages/flutter/lib/src/material/tooltip_theme.dart index 51ac275737d5b..1719ccd09f693 100644 --- a/packages/flutter/lib/src/material/tooltip_theme.dart +++ b/packages/flutter/lib/src/material/tooltip_theme.dart @@ -189,7 +189,7 @@ class TooltipThemeData extends Diagnosticable { /// Values specified here are used for [Tooltip] properties that are not /// given an explicit non-null value. /// -/// {@tool sample} +/// {@tool snippet} /// /// Here is an example of a tooltip theme that applies a blue foreground /// with non-rounded corners. diff --git a/packages/flutter/lib/src/painting/borders.dart b/packages/flutter/lib/src/painting/borders.dart index f5517c89a81c3..79341b09c9e7d 100644 --- a/packages/flutter/lib/src/painting/borders.dart +++ b/packages/flutter/lib/src/painting/borders.dart @@ -29,7 +29,7 @@ enum BorderStyle { /// Note that setting [BorderSide.width] to 0.0 will result in hairline /// rendering. A more involved explanation is present in [BorderSide.width]. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample shows how [BorderSide] objects can be used in a [Container], via /// a [BoxDecoration] and a [Border], to decorate some [Text]. In this example, diff --git a/packages/flutter/lib/src/painting/box_border.dart b/packages/flutter/lib/src/painting/box_border.dart index d2de9dfbc09f7..30b425b642c9f 100644 --- a/packages/flutter/lib/src/painting/box_border.dart +++ b/packages/flutter/lib/src/painting/box_border.dart @@ -243,7 +243,7 @@ abstract class BoxBorder extends ShapeBorder { /// /// The sides are represented by [BorderSide] objects. /// -/// {@tool sample} +/// {@tool snippet} /// /// All four borders the same, two-pixel wide solid white: /// @@ -251,7 +251,7 @@ abstract class BoxBorder extends ShapeBorder { /// Border.all(width: 2.0, color: const Color(0xFFFFFFFF)) /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// The border for a material design divider: /// @@ -259,7 +259,7 @@ abstract class BoxBorder extends ShapeBorder { /// Border(bottom: BorderSide(color: Theme.of(context).dividerColor)) /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// A 1990s-era "OK" button: /// diff --git a/packages/flutter/lib/src/painting/box_decoration.dart b/packages/flutter/lib/src/painting/box_decoration.dart index 95ec70f3f4c7e..afbd20c5bf8d5 100644 --- a/packages/flutter/lib/src/painting/box_decoration.dart +++ b/packages/flutter/lib/src/painting/box_decoration.dart @@ -33,7 +33,7 @@ import 'image_provider.dart'; /// /// The [border] paints over the body; the [boxShadow], naturally, paints below it. /// -/// {@tool sample} +/// {@tool snippet} /// /// The following applies a [BoxDecoration] to a [Container] widget to draw an /// [image] of an owl with a thick black [border] and rounded corners. diff --git a/packages/flutter/lib/src/painting/box_fit.dart b/packages/flutter/lib/src/painting/box_fit.dart index fa83839fa39fb..05035e8e640a3 100644 --- a/packages/flutter/lib/src/painting/box_fit.dart +++ b/packages/flutter/lib/src/painting/box_fit.dart @@ -104,7 +104,7 @@ class FittedSizes { /// convenience function, [Alignment.inscribe], for resolving the sizes to /// rects, as shown in the example below. /// -/// {@tool sample} +/// {@tool snippet} /// /// This function paints a [dart:ui.Image] `image` onto the [Rect] `outputRect` on a /// [Canvas] `canvas`, using a [Paint] `paint`, applying the [BoxFit] algorithm diff --git a/packages/flutter/lib/src/painting/continuous_rectangle_border.dart b/packages/flutter/lib/src/painting/continuous_rectangle_border.dart index 8b85deaf9bff1..20ba15055164c 100644 --- a/packages/flutter/lib/src/painting/continuous_rectangle_border.dart +++ b/packages/flutter/lib/src/painting/continuous_rectangle_border.dart @@ -12,7 +12,7 @@ import 'edge_insets.dart'; /// A rectangular border with smooth continuous transitions between the straight /// sides and the rounded corners. /// -/// {@tool sample} +/// {@tool snippet} /// ```dart /// Widget build(BuildContext context) { /// return Material( diff --git a/packages/flutter/lib/src/painting/edge_insets.dart b/packages/flutter/lib/src/painting/edge_insets.dart index 63504c863e8d9..ac331a303858f 100644 --- a/packages/flutter/lib/src/painting/edge_insets.dart +++ b/packages/flutter/lib/src/painting/edge_insets.dart @@ -305,7 +305,7 @@ abstract class EdgeInsetsGeometry { /// _start_, top, _end_, and bottom, where start and end are resolved in terms /// of a [TextDirection] (typically obtained from the ambient [Directionality]). /// -/// {@tool sample} +/// {@tool snippet} /// /// Here are some examples of how to create [EdgeInsets] instances: /// @@ -315,7 +315,7 @@ abstract class EdgeInsetsGeometry { /// const EdgeInsets.all(8.0) /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// Eight pixel margin above and below, no horizontal margins: /// @@ -323,7 +323,7 @@ abstract class EdgeInsetsGeometry { /// const EdgeInsets.symmetric(vertical: 8.0) /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// Left margin indent of 40 pixels: /// @@ -344,7 +344,7 @@ class EdgeInsets extends EdgeInsetsGeometry { /// Creates insets where all the offsets are `value`. /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical eight-pixel margin on all sides: /// @@ -360,7 +360,7 @@ class EdgeInsets extends EdgeInsetsGeometry { /// Creates insets with only the given values non-zero. /// - /// {@tool sample} + /// {@tool snippet} /// /// Left margin indent of 40 pixels: /// @@ -377,7 +377,7 @@ class EdgeInsets extends EdgeInsetsGeometry { /// Creates insets with symmetrical vertical and horizontal offsets. /// - /// {@tool sample} + /// {@tool snippet} /// /// Eight pixel margin above and below, no horizontal margins: /// @@ -638,7 +638,7 @@ class EdgeInsetsDirectional extends EdgeInsetsGeometry { /// Creates insets with only the given values non-zero. /// - /// {@tool sample} + /// {@tool snippet} /// /// A margin indent of 40 pixels on the leading side: /// diff --git a/packages/flutter/lib/src/painting/gradient.dart b/packages/flutter/lib/src/painting/gradient.dart index 3ff92e05f72f2..db5c2815cd45d 100644 --- a/packages/flutter/lib/src/painting/gradient.dart +++ b/packages/flutter/lib/src/painting/gradient.dart @@ -82,7 +82,7 @@ abstract class GradientTransform { /// A [GradientTransform] that rotates the gradient around the center-point of /// its bounding box. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample would rotate a sweep gradient by a quarter turn clockwise: /// @@ -327,7 +327,7 @@ abstract class Gradient { /// Typically this class is used with [BoxDecoration], which does the painting. /// To use a [LinearGradient] to paint on a canvas directly, see [createShader]. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample draws a picture that looks like vertical window shades by having /// a [Container] display a [BoxDecoration] with a [LinearGradient]. @@ -551,7 +551,7 @@ class LinearGradient extends Gradient { /// Typically this class is used with [BoxDecoration], which does the painting. /// To use a [RadialGradient] to paint on a canvas directly, see [createShader]. /// -/// {@tool sample} +/// {@tool snippet} /// /// This function draws a gradient that looks like a sun in a blue sky. /// @@ -799,7 +799,7 @@ class RadialGradient extends Gradient { /// Typically this class is used with [BoxDecoration], which does the painting. /// To use a [SweepGradient] to paint on a canvas directly, see [createShader]. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample draws a different color in each quadrant. /// @@ -824,7 +824,7 @@ class RadialGradient extends Gradient { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample takes the above gradient and rotates it by `math.pi/4` radians, /// i.e. 45 degrees. diff --git a/packages/flutter/lib/src/painting/image_cache.dart b/packages/flutter/lib/src/painting/image_cache.dart index eb9c85704aba7..a16e3eba3c64b 100644 --- a/packages/flutter/lib/src/painting/image_cache.dart +++ b/packages/flutter/lib/src/painting/image_cache.dart @@ -29,7 +29,7 @@ const int _kDefaultSizeBytes = 100 << 20; // 100 MiB /// A shared instance of this cache is retained by [PaintingBinding] and can be /// obtained via the [imageCache] top-level property in the [painting] library. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample shows how to supply your own caching logic and replace the /// global [imageCache] varible. diff --git a/packages/flutter/lib/src/painting/image_provider.dart b/packages/flutter/lib/src/painting/image_provider.dart index cf0f137fa27f6..1c51cc4236fb3 100644 --- a/packages/flutter/lib/src/painting/image_provider.dart +++ b/packages/flutter/lib/src/painting/image_provider.dart @@ -182,7 +182,7 @@ typedef DecoderCallback = Future Function(Uint8List bytes, {int cacheW /// /// The following image formats are supported: {@macro flutter.dart:ui.imageFormats} /// -/// {@tool sample} +/// {@tool snippet} /// /// The following shows the code required to write a widget that fully conforms /// to the [ImageProvider] and [Widget] protocols. (It is essentially a @@ -349,7 +349,7 @@ abstract class ImageProvider { /// The [configuration] is optional and defaults to /// [ImageConfiguration.empty]. /// - /// {@tool sample} + /// {@tool snippet} /// /// The following sample code shows how an image loaded using the [Image] /// widget can be evicted using a [NetworkImage] with a matching URL. diff --git a/packages/flutter/lib/src/painting/inline_span.dart b/packages/flutter/lib/src/painting/inline_span.dart index 8160a6afdc164..90cd3999545a6 100644 --- a/packages/flutter/lib/src/painting/inline_span.dart +++ b/packages/flutter/lib/src/painting/inline_span.dart @@ -108,7 +108,7 @@ class InlineSpanSemanticsInformation { /// this is the [WidgetSpan] class in the widgets library. /// * The subclass [WidgetSpan] specifies embedded inline widgets. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows a tree of [InlineSpan]s that make a query asking for a /// name with a [TextField] embedded inline. diff --git a/packages/flutter/lib/src/painting/shape_decoration.dart b/packages/flutter/lib/src/painting/shape_decoration.dart index 06cfd2e05f99f..5e0fcac3dd0dc 100644 --- a/packages/flutter/lib/src/painting/shape_decoration.dart +++ b/packages/flutter/lib/src/painting/shape_decoration.dart @@ -24,7 +24,7 @@ import 'rounded_rectangle_border.dart'; /// optionally filling it with a color or a gradient, optionally painting an /// image into it, and optionally casting a shadow. /// -/// {@tool sample} +/// {@tool snippet} /// /// The following example uses the [Container] widget from the widgets layer to /// draw a white rectangle with a 24-pixel multicolor outline, with the text diff --git a/packages/flutter/lib/src/painting/strut_style.dart b/packages/flutter/lib/src/painting/strut_style.dart index fa163dc444eee..eb085bb1a3c70 100644 --- a/packages/flutter/lib/src/painting/strut_style.dart +++ b/packages/flutter/lib/src/painting/strut_style.dart @@ -122,7 +122,7 @@ import 'text_style.dart'; /// /// ### Examples /// -/// {@tool sample} +/// {@tool snippet} /// In this simple case, the text will be rendered at font size 10, however, /// the vertical height of each line will be the strut height (Roboto in /// font size 30 * 1.5) as the text itself is shorter than the strut. @@ -143,7 +143,7 @@ import 'text_style.dart'; /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// Here, strut is used to absorb the additional line height in the second line. /// The strut [height] was defined as 1.5 (the default font size is 14), which /// caused all lines to be laid out taller than without strut. This extra space @@ -184,7 +184,7 @@ import 'text_style.dart'; /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// Here, strut is used to enable strange and overlapping text to achieve unique /// effects. The `M`s in lines 2 and 3 are able to extend above their lines and /// fill empty space in lines above. The [forceStrutHeight] is enabled and functions @@ -227,7 +227,7 @@ import 'text_style.dart'; /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// This example uses forceStrutHeight to create a 'drop cap' for the 'T' in 'The'. /// By locking the line heights to the metrics of the 14pt serif font, we are able /// to lay out a large 37pt 'T' on the second line to take up space on both the first diff --git a/packages/flutter/lib/src/painting/text_span.dart b/packages/flutter/lib/src/painting/text_span.dart index d4ea24918a899..5bd5e3f097473 100644 --- a/packages/flutter/lib/src/painting/text_span.dart +++ b/packages/flutter/lib/src/painting/text_span.dart @@ -30,7 +30,7 @@ import 'text_style.dart'; /// span in a widget, use a [RichText]. For text with a single style, consider /// using the [Text] widget. /// -/// {@tool sample} +/// {@tool snippet} /// /// The text "Hello world!", in black: /// @@ -110,7 +110,7 @@ class TextSpan extends InlineSpan { /// [GestureRecognizer.dispose] when the [InlineSpan] object is no longer /// used. /// - /// {@tool sample} + /// {@tool snippet} /// /// This example shows how to manage the lifetime of a gesture recognizer /// provided to an [InlineSpan] object. It defines a `BuzzingText` widget diff --git a/packages/flutter/lib/src/painting/text_style.dart b/packages/flutter/lib/src/painting/text_style.dart index 3e9bc2cd4a16c..19dd904442762 100644 --- a/packages/flutter/lib/src/painting/text_style.dart +++ b/packages/flutter/lib/src/painting/text_style.dart @@ -25,7 +25,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// /// ### Bold /// -/// {@tool sample} +/// {@tool snippet} /// Here, a single line of text in a [Text] widget is given a specific style /// override. The style is mixed with the ambient [DefaultTextStyle] by the /// [Text] widget. @@ -42,7 +42,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// /// ### Italics /// -/// {@tool sample} +/// {@tool snippet} /// As in the previous example, the [Text] widget is given a specific style /// override which is implicitly mixed with the ambient [DefaultTextStyle]. /// @@ -98,7 +98,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// /// ### Size /// -/// {@tool sample} +/// {@tool snippet} /// In this example, the ambient [DefaultTextStyle] is explicitly manipulated to /// obtain a [TextStyle] that doubles the default font size. /// @@ -124,7 +124,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// /// ![Text height diagram](https://flutter.github.io/assets-for-api-docs/assets/painting/text_height_diagram.png) /// -/// {@tool sample} +/// {@tool snippet} /// The [height] property can be used to change the line height. Here, the line /// height is set to 5 times the font size, so that the text is very spaced out. /// Since the `fontSize` is set to 10, the final height of the line is @@ -146,7 +146,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// /// ### Wavy red underline with black text /// -/// {@tool sample} +/// {@tool snippet} /// Styles can be combined. In this example, the misspelled word is drawn in /// black text and underlined with a wavy red line to indicate a spelling error. /// (The remainder is styled according to the Flutter default text styles, not @@ -180,7 +180,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// /// ### Borders and stroke (Foreground) /// -/// {@tool sample} +/// {@tool snippet} /// To create bordered text, a [Paint] with [Paint.style] set to [PaintingStyle.stroke] /// should be provided as a [foreground] paint. The following example uses a [Stack] /// to produce a stroke and fill effect. @@ -216,7 +216,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// /// ### Gradients (Foreground) /// -/// {@tool sample} +/// {@tool snippet} /// The [foreground] property also allows effects such as gradients to be /// applied to the text. Here we provide a [Paint] with a [ui.Gradient] /// shader. @@ -275,7 +275,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// To select a custom font, create [TextStyle] using the [fontFamily] /// argument as shown in the example below: /// -/// {@tool sample} +/// {@tool snippet} /// ![](https://flutter.github.io/assets-for-api-docs/assets/painting/text_style_custom_fonts.png) /// /// ```dart @@ -322,7 +322,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// In this case, since the app locally defines the font, the TextStyle is /// created without the `package` argument: /// -/// {@tool sample} +/// {@tool snippet} /// ```dart /// const TextStyle(fontFamily: 'Raleway') /// ``` @@ -348,7 +348,7 @@ const String _kColorBackgroundWarning = 'Cannot provide both a backgroundColor a /// families for multilingual text spans as well as separate fonts for glyphs such /// as emojis. /// -/// {@tool sample} +/// {@tool snippet} /// In the following example, any glyphs not present in the font `Raleway` will be attempted /// to be resolved with `Noto Sans CJK SC`, and then with `Noto Color Emoji`: /// @@ -618,7 +618,7 @@ class TextStyle extends Diagnosticable { /// a [decorationThickness] of 2.0 will draw a decoration twice as thick as /// the font defined decoration thickness. /// - /// {@tool sample} + /// {@tool snippet} /// To achieve a bolded strike-through, we can apply a thicker stroke for the /// decoration. /// @@ -633,7 +633,7 @@ class TextStyle extends Diagnosticable { /// ``` /// {@end-tool} /// - /// {@tool sample} + /// {@tool snippet} /// We can apply a very thin and subtle wavy underline (perhaps, when words /// are misspelled) by using a [decorationThickness] < 1.0. /// diff --git a/packages/flutter/lib/src/physics/gravity_simulation.dart b/packages/flutter/lib/src/physics/gravity_simulation.dart index 2f356b06bb86a..4f3bdf2f21448 100644 --- a/packages/flutter/lib/src/physics/gravity_simulation.dart +++ b/packages/flutter/lib/src/physics/gravity_simulation.dart @@ -12,7 +12,7 @@ import 'simulation.dart'; /// Models a particle that follows Newton's second law of motion. The simulation /// ends when the position reaches a defined point. /// -/// {@tool sample} +/// {@tool snippet} /// /// This method triggers an [AnimationController] (a previously constructed /// `_controller` field) to simulate a fall of 300 pixels. diff --git a/packages/flutter/lib/src/rendering/binding.dart b/packages/flutter/lib/src/rendering/binding.dart index ee0efc76a4ff5..2d1babbb21613 100644 --- a/packages/flutter/lib/src/rendering/binding.dart +++ b/packages/flutter/lib/src/rendering/binding.dart @@ -189,7 +189,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture /// it causes the widget to be automatically rebuilt when the brightness /// changes. /// - /// {@tool sample} + /// {@tool snippet} /// Querying [Window.platformBrightness]. /// /// ```dart @@ -197,7 +197,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture /// ``` /// {@end-tool} /// - /// {@tool sample} + /// {@tool snippet} /// Querying [MediaQuery] directly. Preferred. /// /// ```dart @@ -205,7 +205,7 @@ mixin RendererBinding on BindingBase, ServicesBinding, SchedulerBinding, Gesture /// ``` /// {@end-tool} /// - /// {@tool sample} + /// {@tool snippet} /// Querying [MediaQueryData]. /// /// ```dart diff --git a/packages/flutter/lib/src/rendering/box.dart b/packages/flutter/lib/src/rendering/box.dart index 82b7f6d0c53e0..47d6fd18c635b 100644 --- a/packages/flutter/lib/src/rendering/box.dart +++ b/packages/flutter/lib/src/rendering/box.dart @@ -683,7 +683,7 @@ class BoxHitTestResult extends HitTestResult { /// the child speaks a different hit test protocol then the parent and the /// position is not required to do the actual hit testing in that protocol. /// - /// {@tool sample} + /// {@tool snippet} /// This method is used in [RenderBox.hitTestChildren] when the child and /// parent don't share the same origin. /// diff --git a/packages/flutter/lib/src/rendering/custom_layout.dart b/packages/flutter/lib/src/rendering/custom_layout.dart index 3262ee09a1c1d..779beae3757b0 100644 --- a/packages/flutter/lib/src/rendering/custom_layout.dart +++ b/packages/flutter/lib/src/rendering/custom_layout.dart @@ -51,7 +51,7 @@ class MultiChildLayoutParentData extends ContainerBoxParentData { /// identifies it to the delegate. The [LayoutId.id] needs to be unique among /// the children that the [CustomMultiChildLayout] manages. /// -/// {@tool sample} +/// {@tool snippet} /// /// Below is an example implementation of [performLayout] that causes one widget /// (the follower) to be the same size as another (the leader): diff --git a/packages/flutter/lib/src/rendering/custom_paint.dart b/packages/flutter/lib/src/rendering/custom_paint.dart index e3cc975a91da0..4ba6dd5b1a2a4 100644 --- a/packages/flutter/lib/src/rendering/custom_paint.dart +++ b/packages/flutter/lib/src/rendering/custom_paint.dart @@ -64,7 +64,7 @@ typedef SemanticsBuilderCallback = List Function(Size si /// class is provided, to check if the new instance contains different /// information that affects the semantics tree. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample extends the same code shown for [RadialGradient] to create a /// custom painter that paints a sky. diff --git a/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart b/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart index 8ec25e13041bb..c0133478654a9 100644 --- a/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart +++ b/packages/flutter/lib/src/rendering/debug_overflow_indicator.dart @@ -49,7 +49,7 @@ class _OverflowRegionData { /// overflows. It will print on the first occurrence, and once after each time that /// [reassemble] is called. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// class MyRenderObject extends RenderAligningShiftedBox with DebugOverflowIndicatorMixin { diff --git a/packages/flutter/lib/src/rendering/object.dart b/packages/flutter/lib/src/rendering/object.dart index 3476119123e72..c9fa78f07f54b 100644 --- a/packages/flutter/lib/src/rendering/object.dart +++ b/packages/flutter/lib/src/rendering/object.dart @@ -2410,7 +2410,7 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im /// asynchronous computation) will at best have no useful effect and at worse /// will cause crashes as the data will be in an inconsistent state. /// - /// {@tool sample} + /// {@tool snippet} /// /// The following snippet will describe the node as a button that responds to /// tap actions. diff --git a/packages/flutter/lib/src/rendering/proxy_box.dart b/packages/flutter/lib/src/rendering/proxy_box.dart index 3b834c622356c..b17180e332140 100644 --- a/packages/flutter/lib/src/rendering/proxy_box.dart +++ b/packages/flutter/lib/src/rendering/proxy_box.dart @@ -2907,7 +2907,7 @@ class RenderRepaintBoundary extends RenderProxyBox { /// will give you a 1:1 mapping between logical pixels and the output pixels /// in the image. /// - /// {@tool sample} + /// {@tool snippet} /// /// The following is an example of how to go from a `GlobalKey` on a /// `RepaintBoundary` to a PNG: diff --git a/packages/flutter/lib/src/semantics/semantics.dart b/packages/flutter/lib/src/semantics/semantics.dart index 5831864fada3d..6447128af26ce 100644 --- a/packages/flutter/lib/src/semantics/semantics.dart +++ b/packages/flutter/lib/src/semantics/semantics.dart @@ -1665,7 +1665,7 @@ class SemanticsNode extends AbstractNode with DiagnosticableTreeMixin { /// describes how high the box is that this [SemanticsNode] occupies in three /// dimensional space. The two other dimensions are defined by [rect]. /// - /// {@tool sample} + /// {@tool snippet} /// The following code stacks three [PhysicalModel]s on top of each other /// separated by non-zero elevations. /// diff --git a/packages/flutter/lib/src/services/keyboard_key.dart b/packages/flutter/lib/src/services/keyboard_key.dart index 3c8e0b3897ba8..f70d9d3b09f45 100644 --- a/packages/flutter/lib/src/services/keyboard_key.dart +++ b/packages/flutter/lib/src/services/keyboard_key.dart @@ -45,7 +45,7 @@ abstract class KeyboardKey extends Diagnosticable { /// look at the physical key to make sure that regardless of the character the /// key produces, you got the key that is in that location on the keyboard. /// -/// {@tool snippet --template=stateful_widget_scaffold} +/// {@tool sample --template=stateful_widget_scaffold} /// This example shows how to detect if the user has selected the logical "Q" /// key. /// @@ -127,7 +127,7 @@ class LogicalKeyboardKey extends KeyboardKey { /// /// [keyId] must not be null. /// - /// {@tool sample} + /// {@tool snippet} /// To save executable size, it is recommended that the [debugName] be null in /// release mode. You can do this by using the [kReleaseMode] constant. /// @@ -1960,7 +1960,7 @@ class LogicalKeyboardKey extends KeyboardKey { /// looking for "the key next next to the TAB key", since on a French keyboard, /// the key next to the TAB key has an "A" on it. /// -/// {@tool snippet --template=stateful_widget_scaffold} +/// {@tool sample --template=stateful_widget_scaffold} /// This example shows how to detect if the user has selected the physical key /// to the right of the CAPS LOCK key. /// @@ -2036,7 +2036,7 @@ class PhysicalKeyboardKey extends KeyboardKey { /// /// The [usbHidUsage] must not be null. /// - /// {@tool sample} + /// {@tool snippet} /// To save executable size, it is recommended that the [debugName] be null in /// release mode. You can do this using the [kReleaseMode] constant. /// diff --git a/packages/flutter/lib/src/services/platform_channel.dart b/packages/flutter/lib/src/services/platform_channel.dart index 3a32f36eec9d1..47e914199afd6 100644 --- a/packages/flutter/lib/src/services/platform_channel.dart +++ b/packages/flutter/lib/src/services/platform_channel.dart @@ -180,7 +180,7 @@ class MethodChannel { /// in Dart using a MethodChannel and how to implement those methods in Java /// (for Android) and Objective-C (for iOS). /// - /// {@tool sample} + /// {@tool snippet} /// /// The code might be packaged up as a musical plugin, see /// : @@ -233,7 +233,7 @@ class MethodChannel { /// ``` /// {@end-tool} /// - /// {@tool sample} + /// {@tool snippet} /// /// Java (for Android): /// @@ -273,7 +273,7 @@ class MethodChannel { /// ``` /// {@end-tool} /// - /// {@tool sample} + /// {@tool snippet} /// /// Objective-C (for iOS): /// diff --git a/packages/flutter/lib/src/services/system_chrome.dart b/packages/flutter/lib/src/services/system_chrome.dart index 85b6bdebadbfd..2cef6cd2d6818 100644 --- a/packages/flutter/lib/src/services/system_chrome.dart +++ b/packages/flutter/lib/src/services/system_chrome.dart @@ -322,7 +322,7 @@ class SystemChrome { /// If a particular style is not supported on the platform, selecting it will /// have no effect. /// - /// {@tool sample} + /// {@tool snippet} /// ```dart /// @override /// Widget build(BuildContext context) { @@ -340,7 +340,7 @@ class SystemChrome { /// navigation bar and synthesize them into a single style. This can be used /// to configure the system styles when an app bar is not used. /// - /// {@tool snippet --template=stateful_widget_material} + /// {@tool sample --template=stateful_widget_material} /// The following example creates a widget that changes the status bar color /// to a random value on Android. /// diff --git a/packages/flutter/lib/src/widgets/actions.dart b/packages/flutter/lib/src/widgets/actions.dart index ded1ef867bf1a..265850c773841 100644 --- a/packages/flutter/lib/src/widgets/actions.dart +++ b/packages/flutter/lib/src/widgets/actions.dart @@ -371,7 +371,7 @@ class Actions extends InheritedWidget { /// widget, and the new control should be enabled for keyboard traversal and /// activation. /// -/// {@tool snippet --template=stateful_widget_material} +/// {@tool sample --template=stateful_widget_material} /// This example shows how keyboard interaction can be added to a custom control /// that changes color when hovered and focused, and can toggle a light when /// activated, either by touch or by hitting the `X` key on the keyboard. diff --git a/packages/flutter/lib/src/widgets/animated_cross_fade.dart b/packages/flutter/lib/src/widgets/animated_cross_fade.dart index 4e073067a77a1..f23dd52672613 100644 --- a/packages/flutter/lib/src/widgets/animated_cross_fade.dart +++ b/packages/flutter/lib/src/widgets/animated_cross_fade.dart @@ -38,7 +38,7 @@ enum CrossFadeState { /// top child and the bottom child should be keyed using the provided /// `topChildKey` and `bottomChildKey` keys respectively. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// Widget defaultLayoutBuilder(Widget topChild, Key topChildKey, Widget bottomChild, Key bottomChildKey) { @@ -84,7 +84,7 @@ typedef AnimatedCrossFadeBuilder = Widget Function(Widget topChild, Key topChild /// [AnimatedCrossFade] is rebuilt with a different value for the /// [crossFadeState] property. /// -/// {@tool sample} +/// {@tool snippet} /// /// This code fades between two representations of the Flutter logo. It depends /// on a boolean field `_first`; when `_first` is true, the first logo is shown, diff --git a/packages/flutter/lib/src/widgets/animated_list.dart b/packages/flutter/lib/src/widgets/animated_list.dart index 6298411c47437..1db9baf5897d8 100644 --- a/packages/flutter/lib/src/widgets/animated_list.dart +++ b/packages/flutter/lib/src/widgets/animated_list.dart @@ -48,7 +48,7 @@ class _ActiveItem implements Comparable<_ActiveItem> { /// /// {@youtube 560 315 https://www.youtube.com/watch?v=ZtfItHwFlZ8} /// -/// {@tool snippet --template=freeform} +/// {@tool sample --template=freeform} /// This sample application uses an [AnimatedList] to create an effect when /// items are removed or added to the list. /// @@ -490,7 +490,7 @@ class AnimatedListState extends State with TickerProviderStateMixi /// [GlobalKey] or use the static [SliverAnimatedList.of] method from an item's /// input callback. /// -/// {@tool snippet --template=freeform} +/// {@tool sample --template=freeform} /// This sample application uses a [SliverAnimatedList] to create an animated /// effect when items are removed or added to the list. /// diff --git a/packages/flutter/lib/src/widgets/animated_switcher.dart b/packages/flutter/lib/src/widgets/animated_switcher.dart index 10d1c5037c33e..abb009fb86f81 100644 --- a/packages/flutter/lib/src/widgets/animated_switcher.dart +++ b/packages/flutter/lib/src/widgets/animated_switcher.dart @@ -87,7 +87,7 @@ typedef AnimatedSwitcherLayoutBuilder = Widget Function(Widget currentChild, Lis /// progress indicator and the image will be fading out while a new progress /// indicator is fading in.) /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// class ClickCounter extends StatefulWidget { diff --git a/packages/flutter/lib/src/widgets/app.dart b/packages/flutter/lib/src/widgets/app.dart index 7c29768f7c4c1..71f4dbd124844 100644 --- a/packages/flutter/lib/src/widgets/app.dart +++ b/packages/flutter/lib/src/widgets/app.dart @@ -707,7 +707,7 @@ class WidgetsApp extends StatefulWidget { /// By default, this is set to [WidgetsApp.defaultShortcuts]. /// {@endtemplate} /// - /// {@tool sample} + /// {@tool snippet} /// This example shows how to add a single shortcut for /// [LogicalKeyboardKey.select] to the default shortcuts without needing to /// add your own [Shortcuts] widget. @@ -756,7 +756,7 @@ class WidgetsApp extends StatefulWidget { /// widget. /// {@endtemplate} /// - /// {@tool sample} + /// {@tool snippet} /// This example shows how to add a single action handling an /// [ActivateAction] to the default actions without needing to /// add your own [Actions] widget. diff --git a/packages/flutter/lib/src/widgets/async.dart b/packages/flutter/lib/src/widgets/async.dart index 8cd5ed9e56a3d..71454b180bc86 100644 --- a/packages/flutter/lib/src/widgets/async.dart +++ b/packages/flutter/lib/src/widgets/async.dart @@ -341,7 +341,7 @@ typedef AsyncWidgetBuilder = Widget Function(BuildContext context, AsyncSnaps /// /// {@animation 200 150 https://flutter.github.io/assets-for-api-docs/assets/widgets/stream_builder_error.mp4} /// -/// {@tool snippet --template=stateful_widget_material} +/// {@tool sample --template=stateful_widget_material} /// /// This sample shows a [StreamBuilder] that listens to a Stream that emits bids /// for an auction. Every time the StreamBuilder receives a bid from the Stream, @@ -576,7 +576,7 @@ class StreamBuilder extends StreamBuilderBase> { /// /// {@animation 200 150 https://flutter.github.io/assets-for-api-docs/assets/widgets/future_builder_error.mp4} /// -/// {@tool snippet --template=stateful_widget_material} +/// {@tool sample --template=stateful_widget_material} /// /// This sample shows a [FutureBuilder] that displays a loading spinner while it /// loads data. It displays a success icon and text if the [Future] completes diff --git a/packages/flutter/lib/src/widgets/basic.dart b/packages/flutter/lib/src/widgets/basic.dart index eb236eb0ca0db..1d29dbc821894 100644 --- a/packages/flutter/lib/src/widgets/basic.dart +++ b/packages/flutter/lib/src/widgets/basic.dart @@ -136,7 +136,7 @@ class Directionality extends InheritedWidget { /// /// {@youtube 560 315 https://www.youtube.com/watch?v=9hltevOHQBw} /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows some [Text] when the `_visible` member field is true, and /// hides it when it is false: @@ -167,7 +167,7 @@ class Directionality extends InheritedWidget { /// For example, `Container(color: Color.fromRGBO(255, 0, 0, 0.5))` is much /// faster than `Opacity(opacity: 0.5, child: Container(color: Colors.red))`. /// -/// {@tool sample} +/// {@tool snippet} /// /// The following example draws an [Image] with 0.5 opacity without using /// [Opacity]: @@ -266,7 +266,7 @@ class Opacity extends SingleChildRenderObjectWidget { /// For example, [ShaderMask] can be used to gradually fade out the edge /// of a child by using a [new ui.Gradient.linear] mask. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example makes the text look like it is on fire: /// @@ -345,7 +345,7 @@ class ShaderMask extends SingleChildRenderObjectWidget { /// /// {@youtube 560 315 https://www.youtube.com/watch?v=dYRs7Q1vfYI} /// -/// {@tool sample} +/// {@tool snippet} /// If the [BackdropFilter] needs to be applied to an area that exactly matches /// its child, wraps the [BackdropFilter] with a clip widget that clips exactly /// to that child. @@ -439,7 +439,7 @@ class BackdropFilter extends SingleChildRenderObjectWidget { /// [isComplex] and [willChange] are hints to the compositor's raster cache /// and must not be null. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows how the sample custom painter shown at [CustomPainter] /// could be used in a [CustomPaint] widget to display a background to some @@ -555,7 +555,7 @@ class CustomPaint extends SingleChildRenderObjectWidget { /// * [OverflowBox] /// * [SizedOverflowBox] /// -/// {@tool sample} +/// {@tool snippet} /// /// For example, by combining a [ClipRect] with an [Align], one can show just /// the top half of an [Image]: @@ -1056,7 +1056,7 @@ class PhysicalShape extends SingleChildRenderObjectWidget { /// /// {@youtube 560 315 https://www.youtube.com/watch?v=9z_YNlRlWfA} /// -/// {@tool sample} +/// {@tool snippet} /// /// This example rotates and skews an orange box containing text, keeping the /// top right corner pinned to its original position. @@ -1105,7 +1105,7 @@ class Transform extends SingleChildRenderObjectWidget { /// The `angle` argument must not be null. It gives the rotation in clockwise /// radians. /// - /// {@tool sample} + /// {@tool snippet} /// /// This example rotates an orange box containing text around its center by /// fifteen degrees. @@ -1140,7 +1140,7 @@ class Transform extends SingleChildRenderObjectWidget { /// /// The `offset` argument must not be null. It specifies the translation. /// - /// {@tool sample} + /// {@tool snippet} /// /// This example shifts the silver-colored child down by fifteen pixels. /// @@ -1173,7 +1173,7 @@ class Transform extends SingleChildRenderObjectWidget { /// The [alignment] controls the origin of the scale; by default, this is /// the center of the box. /// - /// {@tool sample} + /// {@tool snippet} /// /// This example shrinks an orange box containing text such that each dimension /// is half the size it would otherwise be. @@ -1512,7 +1512,7 @@ class FractionalTranslation extends SingleChildRenderObjectWidget { /// this object applies its rotation prior to layout, which means the entire /// rotated box consumes only as much space as required by the rotated child. /// -/// {@tool sample} +/// {@tool snippet} /// /// This snippet rotates the child (some [Text]) so that it renders from bottom /// to top, like an axis label on a graph: @@ -1561,7 +1561,7 @@ class RotatedBox extends SingleChildRenderObjectWidget { /// size. Padding then sizes itself to its child's size, inflated by the /// padding, effectively creating empty space around the child. /// -/// {@tool sample} +/// {@tool snippet} /// /// This snippet creates "Hello World!" [Text] inside a [Card] that is indented /// by sixteen pixels in each direction. @@ -1664,7 +1664,7 @@ class Padding extends SingleChildRenderObjectWidget { /// widget positions the `child` such that both points are lined up on top of /// each other. /// -/// {@tool sample} +/// {@tool snippet} /// The [Align] widget in this example uses one of the defined constants from /// [Alignment], [topRight]. This places the [FlutterLogo] in the top right corner /// of the parent blue [Container]. @@ -1688,7 +1688,7 @@ class Padding extends SingleChildRenderObjectWidget { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// The [Alignment] used in the following example defines a single point: /// /// * (0.2 * width of [FlutterLogo]/2 + width of [FlutterLogo]/2, 0.6 * height @@ -1719,7 +1719,7 @@ class Padding extends SingleChildRenderObjectWidget { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// The [FractionalOffset] used in the following example defines two points: /// /// * (0.2 * width of [FlutterLogo], 0.6 * height of [FlutterLogo]) = (12.0, 36.0) @@ -2014,7 +2014,7 @@ class CustomMultiChildLayout extends MultiChildRenderObjectWidget { /// /// {@youtube 560 315 https://www.youtube.com/watch?v=EHPu_DzRfqA} /// -/// {@tool sample} +/// {@tool snippet} /// /// This snippet makes the child widget (a [Card] with some [Text]) have the /// exact size 200x300, parental constraints permitting: @@ -2124,7 +2124,7 @@ class SizedBox extends SingleChildRenderObjectWidget { /// /// {@youtube 560 315 https://www.youtube.com/watch?v=o2KveVr7adg} /// -/// {@tool sample} +/// {@tool snippet} /// /// This snippet makes the child widget (a [Card] with some [Text]) fill the /// parent, by applying [BoxConstraints.expand] constraints: @@ -3105,7 +3105,7 @@ class ListBody extends MultiChildRenderObjectWidget { /// [CustomMultiChildLayout] instead. In particular, when using a [Stack] you /// can't position children relative to their size or the stack's own size. /// -/// {@tool sample} +/// {@tool snippet} /// /// Using a [Stack] you can position widgets over one another. /// @@ -3134,7 +3134,7 @@ class ListBody extends MultiChildRenderObjectWidget { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows how [Stack] can be used to enhance text visibility /// by adding gradient backdrops. @@ -3968,7 +3968,7 @@ class Flex extends MultiChildRenderObjectWidget { /// If you only have one child, then consider using [Align] or [Center] to /// position the child. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example divides the available space into three (horizontally), and /// places text centered in the first two cells and the Flutter logo centered in @@ -4158,7 +4158,7 @@ class Row extends Flex { /// If you only have one child, then consider using [Align] or [Center] to /// position the child. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example uses a [Column] to arrange three widgets vertically, the last /// being made to fill all the remaining space. @@ -4180,7 +4180,7 @@ class Row extends Flex { /// ) /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// In the sample above, the text and the logo are centered on each line. In the /// following example, the [crossAxisAlignment] is set to @@ -4435,7 +4435,7 @@ class Flexible extends ParentDataWidget { /// /// {@youtube 560 315 https://www.youtube.com/watch?v=_rnZaagadyo} /// -/// {@tool snippet --template=stateless_widget_material} +/// {@tool sample --template=stateless_widget_material} /// This example shows how to use an [Expanded] widget in a [Column] so that /// it's middle child, a [Container] here, expands to fill the space. /// @@ -4474,7 +4474,7 @@ class Flexible extends ParentDataWidget { /// ``` /// {@end-tool} /// -/// {@tool snippet --template=stateless_widget_material} +/// {@tool sample --template=stateless_widget_material} /// This example shows how to use an [Expanded] widget in a [Row] with multiple /// children expanded, utilizing the [flex] factor to prioritize available space. /// @@ -4548,7 +4548,7 @@ class Expanded extends Flexible { /// /// {@youtube 560 315 https://www.youtube.com/watch?v=z5iw2SeFx2M} /// -/// {@tool sample} +/// {@tool snippet} /// /// This example renders some [Chip]s representing four contacts in a [Wrap] so /// that they flow across lines as necessary. @@ -4819,7 +4819,7 @@ class Wrap extends MultiChildRenderObjectWidget { /// /// {@animation 450 100 https://flutter.github.io/assets-for-api-docs/assets/widgets/flow_menu.mp4} /// -/// {@tool snippet --template=freeform} +/// {@tool sample --template=freeform} /// /// This example uses the [Flow] widget to create a menu that opens and closes /// as it is interacted with, shown above. The color of the button in the menu @@ -5001,7 +5001,7 @@ class Flow extends MultiChildRenderObjectWidget { /// spans with the default text style while still allowing specified styles per /// span. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample demonstrates how to mix and match text with different text /// styles using the [RichText] Widget. It displays the text "Hello bold world," @@ -5389,7 +5389,7 @@ class RawImage extends LeafRenderObjectWidget { /// For example, used by [Image] to determine which bundle to use for /// [AssetImage]s if no bundle is specified explicitly. /// -/// {@tool sample} +/// {@tool snippet} /// /// This can be used in tests to override what the current asset bundle is, thus /// allowing specific resources to be injected into the widget under test. @@ -5407,7 +5407,7 @@ class RawImage extends LeafRenderObjectWidget { /// } /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// ...then wrap the widget under test with a [DefaultAssetBundle] using this /// bundle implementation: @@ -5527,7 +5527,7 @@ class WidgetToRenderBoxAdapter extends LeafRenderObjectWidget { /// If it has a child, this widget defers to the child for sizing behavior. If /// it does not have a child, it grows to fit the parent instead. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// This example makes a [Container] react to being touched, showing a count of /// the number of pointer downs and ups. /// @@ -5780,7 +5780,7 @@ class _PointerListener extends SingleChildRenderObjectWidget { /// If it has a child, this widget defers to the child for sizing behavior. If /// it does not have a child, it grows to fit the parent instead. /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// This example makes a [Container] react to being entered by a mouse /// pointer, showing a count of the number of entries and exits. /// @@ -6702,7 +6702,7 @@ class ExcludeSemantics extends SingleChildRenderObjectWidget { /// to manually provide semantic indexes if not all child of the scrollable /// contribute semantics. /// -/// {@tool sample} +/// {@tool snippet} /// /// The example below handles spacers in a scrollable that don't contribute /// semantics. The automatic indexes would give the spaces a semantic index, @@ -6838,7 +6838,7 @@ typedef StatefulWidgetBuilder = Widget Function(BuildContext context, StateSette /// Since the [builder] is re-invoked when the [StateSetter] is called, any /// variables that represents state should be kept outside the [builder] function. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows using an inline StatefulBuilder that rebuilds and that /// also has state. diff --git a/packages/flutter/lib/src/widgets/binding.dart b/packages/flutter/lib/src/widgets/binding.dart index 995cb3ea8917a..291e7ba0f8e98 100644 --- a/packages/flutter/lib/src/widgets/binding.dart +++ b/packages/flutter/lib/src/widgets/binding.dart @@ -31,7 +31,7 @@ export 'dart:ui' show AppLifecycleState, Locale; /// handlers must be implemented (and the analyzer will list those that have /// been omitted). /// -/// {@tool sample} +/// {@tool snippet} /// /// This [StatefulWidget] implements the parts of the [State] and /// [WidgetsBindingObserver] protocols necessary to react to application @@ -109,7 +109,7 @@ abstract class WidgetsBindingObserver { /// /// This method exposes notifications from [Window.onMetricsChanged]. /// - /// {@tool sample} + /// {@tool snippet} /// /// This [StatefulWidget] implements the parts of the [State] and /// [WidgetsBindingObserver] protocols necessary to react when the device is @@ -170,7 +170,7 @@ abstract class WidgetsBindingObserver { /// /// This method exposes notifications from [Window.onTextScaleFactorChanged]. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// class TextScaleFactorReactor extends StatefulWidget { diff --git a/packages/flutter/lib/src/widgets/container.dart b/packages/flutter/lib/src/widgets/container.dart index 2800c61815355..472a092d707f4 100644 --- a/packages/flutter/lib/src/widgets/container.dart +++ b/packages/flutter/lib/src/widgets/container.dart @@ -23,7 +23,7 @@ import 'image.dart'; /// The [child] is not clipped. To clip a child to the shape of a particular /// [ShapeDecoration], consider using a [ClipPath] widget. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample shows a radial gradient that draws a moon on a night sky: /// @@ -230,7 +230,7 @@ class DecoratedBox extends SingleChildRenderObjectWidget { /// /// ## Example /// -/// {@tool sample} +/// {@tool snippet} /// This example shows a 48x48 amber square (placed inside a [Center] widget in /// case the parent widget has its own opinions regarding the size that the /// [Container] should take), with a margin so that it stays away from @@ -250,7 +250,7 @@ class DecoratedBox extends SingleChildRenderObjectWidget { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows how to use many of the features of [Container] at once. /// The [constraints] are set to fit the font size plus ample headroom diff --git a/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart b/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart index 73d4222c6a757..5694ae8830d20 100644 --- a/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart +++ b/packages/flutter/lib/src/widgets/draggable_scrollable_sheet.dart @@ -54,7 +54,7 @@ typedef ScrollableWidgetBuilder = Widget Function( /// to position sheet based on the space it is taking, the [expand] property /// may be set to false. /// -/// {@tool sample} +/// {@tool snippet} /// /// This is a sample widget which shows a [ListView] that has 25 [ListTile]s. /// It starts out as taking up half the body of the [Scaffold], and can be diff --git a/packages/flutter/lib/src/widgets/editable_text.dart b/packages/flutter/lib/src/widgets/editable_text.dart index 8188fb62930fa..2586a170e7f33 100644 --- a/packages/flutter/lib/src/widgets/editable_text.dart +++ b/packages/flutter/lib/src/widgets/editable_text.dart @@ -70,7 +70,7 @@ const int _kObscureShowLatestCharCursorTicks = 3; /// /// Remember to [dispose] of the [TextEditingController] when it is no longer needed. /// This will ensure we discard any resources used by the object. -/// {@tool snippet --template=stateful_widget_material} +/// {@tool sample --template=stateful_widget_material} /// This example creates a [TextField] with a [TextEditingController] whose /// change listener forces the entered text to be lower case and keeps the /// cursor at the end of the input. @@ -868,7 +868,7 @@ class EditableText extends StatefulWidget { /// field. /// {@endtemplate} /// - /// {@tool snippet --template=stateful_widget_material} + /// {@tool sample --template=stateful_widget_material} /// When a non-completion action is pressed, such as "next" or "previous", it /// is often desirable to move the focus to the next or previous field. To do /// this, handle it as in this example, by calling [FocusNode.focusNext] in diff --git a/packages/flutter/lib/src/widgets/fade_in_image.dart b/packages/flutter/lib/src/widgets/fade_in_image.dart index 810dc0a656943..5cbc0b23c706d 100644 --- a/packages/flutter/lib/src/widgets/fade_in_image.dart +++ b/packages/flutter/lib/src/widgets/fade_in_image.dart @@ -52,7 +52,7 @@ import 'transitions.dart'; /// different image. This is known as "gapless playback" (see also /// [Image.gaplessPlayback]). /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// FadeInImage( diff --git a/packages/flutter/lib/src/widgets/focus_manager.dart b/packages/flutter/lib/src/widgets/focus_manager.dart index 2942c7c4fd9fe..5ba3129b0358f 100644 --- a/packages/flutter/lib/src/widgets/focus_manager.dart +++ b/packages/flutter/lib/src/widgets/focus_manager.dart @@ -239,7 +239,7 @@ class FocusAttachment { /// [ReadingOrderTraversalPolicy], and [DirectionalFocusTraversalPolicyMixin], /// but custom policies can be built based upon these policies. /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// This example shows how a FocusNode should be managed if not using the /// [Focus] or [FocusScope] widgets. See the [Focus] widget for a similar /// example using [Focus] and [FocusScope] widgets. diff --git a/packages/flutter/lib/src/widgets/focus_scope.dart b/packages/flutter/lib/src/widgets/focus_scope.dart index 03a79372f6640..e73787e5bba61 100644 --- a/packages/flutter/lib/src/widgets/focus_scope.dart +++ b/packages/flutter/lib/src/widgets/focus_scope.dart @@ -38,7 +38,7 @@ import 'inherited_notifier.dart'; /// /// To collect a sub-tree of nodes into a group, use a [FocusScope]. /// -/// {@tool snippet --template=stateful_widget_scaffold} +/// {@tool sample --template=stateful_widget_scaffold} /// This example shows how to manage focus using the [Focus] and [FocusScope] /// widgets. See [FocusNode] for a similar example that doesn't use [Focus] or /// [FocusScope]. diff --git a/packages/flutter/lib/src/widgets/form.dart b/packages/flutter/lib/src/widgets/form.dart index 9b71f4b99a3fb..cea394b146ad1 100644 --- a/packages/flutter/lib/src/widgets/form.dart +++ b/packages/flutter/lib/src/widgets/form.dart @@ -16,7 +16,7 @@ import 'will_pop_scope.dart'; /// with a context whose ancestor is the [Form], or pass a [GlobalKey] to the /// [Form] constructor and call [GlobalKey.currentState]. /// -/// {@tool snippet --template=stateful_widget_scaffold} +/// {@tool sample --template=stateful_widget_scaffold} /// This example shows a [Form] with one [TextFormField] to enter an email /// address and a [RaisedButton] to submit the form. A [GlobalKey] is used here /// to identify the [Form] and validate input. diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart index 000a1ce1da523..cf8eb5d3bcac9 100644 --- a/packages/flutter/lib/src/widgets/framework.dart +++ b/packages/flutter/lib/src/widgets/framework.dart @@ -532,7 +532,7 @@ abstract class Widget extends DiagnosticableTree { /// widget, so that only the inner-most widget needs to be rebuilt when the /// theme changes. /// -/// {@tool sample} +/// {@tool snippet} /// /// The following is a skeleton of a stateless widget subclass called `GreenFrog`. /// @@ -551,7 +551,7 @@ abstract class Widget extends DiagnosticableTree { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// /// This next example shows the more generic widget `Frog` which can be given /// a color and a child: @@ -746,7 +746,7 @@ abstract class StatelessWidget extends Widget { /// [KeyedSubtree] widget may be useful for this purpose if no other widget /// can conveniently be assigned the key.) /// -/// {@tool sample} +/// {@tool snippet} /// /// This is a skeleton of a stateful widget subclass called `YellowBird`. /// @@ -770,7 +770,7 @@ abstract class StatelessWidget extends Widget { /// } /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// This example shows the more generic widget `Bird` which can be given a /// color and a child, and which has some internal state with a method that @@ -1423,7 +1423,7 @@ abstract class ProxyWidget extends Widget { /// thus also to a particular [RenderObjectWidget] class. That class is `T`, the /// [ParentDataWidget] type argument. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows how you would build a [ParentDataWidget] to configure a /// `FrogJar` widget's children by specifying a [Size] for each one. @@ -1558,7 +1558,7 @@ abstract class ParentDataWidget extends ProxyWidge /// /// {@youtube 560 315 https://www.youtube.com/watch?v=Zbm3hjPjQMk} /// -/// {@tool sample} +/// {@tool snippet} /// /// The following is a skeleton of an inherited widget called `FrogColor`: /// @@ -2182,7 +2182,7 @@ abstract class BuildContext { /// an ancestor from one of those methods, save a reference to the ancestor /// by calling [findAncestorStateOfType] in [State.didChangeDependencies]. /// - /// {@tool sample} + /// {@tool snippet} /// /// ```dart /// ScrollableState scrollable = context.findAncestorStateOfType(); @@ -4085,7 +4085,7 @@ typedef ErrorWidgetBuilder = Widget Function(FlutterErrorDetails details); /// /// It is possible to override this widget. /// -/// {@tool snippet --template=freeform} +/// {@tool sample --template=freeform} /// ```dart /// import 'package:flutter/material.dart'; /// diff --git a/packages/flutter/lib/src/widgets/gesture_detector.dart b/packages/flutter/lib/src/widgets/gesture_detector.dart index 9febee15d26eb..7fe883ac4a9bf 100644 --- a/packages/flutter/lib/src/widgets/gesture_detector.dart +++ b/packages/flutter/lib/src/widgets/gesture_detector.dart @@ -128,7 +128,7 @@ class GestureRecognizerFactoryWithHandlers extends /// /// {@animation 200 150 https://flutter.github.io/assets-for-api-docs/assets/widgets/gesture_detector.mp4} /// -/// {@tool sample} +/// {@tool snippet} /// /// This example turns the light bulb yellow when the "turn lights on" button is /// tapped by setting the `_lights` field: @@ -759,7 +759,7 @@ class GestureDetector extends StatelessWidget { /// Configuring the gesture recognizers requires a carefully constructed map, as /// described in [gestures] and as shown in the example below. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows how to hook up a [TapGestureRecognizer]. It assumes that /// the code is being used inside a [State] object with a `_last` field that is @@ -853,7 +853,7 @@ class RawGestureDetector extends StatefulWidget { /// `onDown`, `onStart`, `onUpdate` and `onEnd`, then /// [PanGestureRecognizer]'s `onDown`, `onStart`, `onUpdate` and `onEnd`. /// - /// {@tool sample} + /// {@tool snippet} /// This custom gesture detector listens to force presses, while also allows /// the same callback to be triggered by semantic long presses. /// diff --git a/packages/flutter/lib/src/widgets/icon.dart b/packages/flutter/lib/src/widgets/icon.dart index 0774e93565260..b2a261faa1042 100644 --- a/packages/flutter/lib/src/widgets/icon.dart +++ b/packages/flutter/lib/src/widgets/icon.dart @@ -24,7 +24,7 @@ import 'icon_theme_data.dart'; /// This widget assumes that the rendered icon is squared. Non-squared icons may /// render incorrectly. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows how to create a [Row] of [Icon]s in different colors and /// sizes. The first [Icon] uses a [semanticLabel] to announce in accessibility @@ -113,7 +113,7 @@ class Icon extends StatelessWidget { /// See [Theme] to set the current theme and [ThemeData.brightness] /// for setting the current theme's brightness. /// - /// {@tool sample} + /// {@tool snippet} /// Typically, a material design color will be used, as follows: /// /// ```dart diff --git a/packages/flutter/lib/src/widgets/image.dart b/packages/flutter/lib/src/widgets/image.dart index ac170ac401800..edc5d274c7579 100644 --- a/packages/flutter/lib/src/widgets/image.dart +++ b/packages/flutter/lib/src/widgets/image.dart @@ -207,7 +207,7 @@ typedef ImageLoadingBuilder = Widget Function( /// The image is painted using [paintImage], which describes the meanings of the /// various fields on this class in more detail. /// -/// {@tool sample} +/// {@tool snippet} /// The default constructor can be used with any [ImageProvider], such as a /// [NetworkImage], to display an image from the internet. /// @@ -220,7 +220,7 @@ typedef ImageLoadingBuilder = Widget Function( /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// The [Image] Widget also provides several constructors to display different /// types of images for convenience. In this example, use the [Image.network] /// constructor to display an image from the internet. @@ -460,7 +460,7 @@ class Image extends StatefulWidget { /// which corresponds to bilinear interpolation, rather than the default /// [FilterQuality.none] which corresponds to nearest-neighbor. /// - /// {@tool sample} + /// {@tool snippet} /// /// Suppose that the project's `pubspec.yaml` file contains the following: /// @@ -499,7 +499,7 @@ class Image extends StatefulWidget { /// must be provided. For instance, suppose a package called `my_icons` has /// `icons/heart.png` . /// - /// {@tool sample} + /// {@tool snippet} /// Then to display the image, use: /// /// ```dart @@ -682,7 +682,7 @@ class Image extends StatefulWidget { /// ``` /// {@endtemplate} /// - /// {@tool snippet --template=stateless_widget_material} + /// {@tool sample --template=stateless_widget_material} /// /// The following sample demonstrates how to use this builder to implement an /// image that fades in once it's been loaded. @@ -753,7 +753,7 @@ class Image extends StatefulWidget { /// /// {@macro flutter.widgets.image.chainedBuildersExample} /// - /// {@tool snippet --template=stateless_widget_material} + /// {@tool sample --template=stateless_widget_material} /// /// The following sample uses [loadingBuilder] to show a /// [CircularProgressIndicator] while an image loads over the network. diff --git a/packages/flutter/lib/src/widgets/implicit_animations.dart b/packages/flutter/lib/src/widgets/implicit_animations.dart index e74eddaa3b71b..cf5d3ee1f6b25 100644 --- a/packages/flutter/lib/src/widgets/implicit_animations.dart +++ b/packages/flutter/lib/src/widgets/implicit_animations.dart @@ -473,7 +473,7 @@ abstract class ImplicitlyAnimatedWidgetState /// properties. Dependent properties should not be updated within /// [forEachTween]. /// - /// {@tool sample} + /// {@tool snippet} /// /// This sample implements an implicitly animated widget's `State`. /// The widget animates between colors whenever `widget.targetColor` @@ -578,7 +578,7 @@ abstract class AnimatedWidgetBaseState exten /// like, using a [curve] of [Curves.fastOutSlowIn]. /// {@animation 250 266 https://flutter.github.io/assets-for-api-docs/assets/widgets/animated_container.mp4} /// -/// {@tool snippet --template=stateful_widget_scaffold} +/// {@tool sample --template=stateful_widget_scaffold} /// /// The following example (depicted above) transitions an AnimatedContainer /// between two states. It adjusts the [height], [width], [color], and @@ -1251,7 +1251,7 @@ class _AnimatedPositionedDirectionalState extends AnimatedWidgetBaseState with TickerProviderStateMixin { /// /// {@macro flutter.widgets.navigator.pushNamed.arguments} /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical usage is as follows: /// @@ -1691,7 +1691,7 @@ class NavigatorState extends State with TickerProviderStateMixin { /// /// {@macro flutter.widgets.navigator.pushNamed.arguments} /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical usage is as follows: /// @@ -1717,7 +1717,7 @@ class NavigatorState extends State with TickerProviderStateMixin { /// /// {@macro flutter.widgets.navigator.pushNamed.arguments} /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical usage is as follows: /// @@ -1744,7 +1744,7 @@ class NavigatorState extends State with TickerProviderStateMixin { /// /// {@macro flutter.widgets.navigator.pushNamed.arguments} /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical usage is as follows: /// @@ -1767,7 +1767,7 @@ class NavigatorState extends State with TickerProviderStateMixin { /// /// {@macro flutter.widgets.navigator.push} /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical usage is as follows: /// @@ -1853,7 +1853,7 @@ class NavigatorState extends State with TickerProviderStateMixin { /// /// {@macro flutter.widgets.navigator.pushReplacement} /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical usage is as follows: /// @@ -1912,7 +1912,7 @@ class NavigatorState extends State with TickerProviderStateMixin { /// /// {@macro flutter.widgets.navigator.pushAndRemoveUntil} /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical usage is as follows: /// @@ -2088,7 +2088,7 @@ class NavigatorState extends State with TickerProviderStateMixin { /// /// {@macro flutter.widgets.navigator.pop} /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical usage for closing a route is as follows: /// @@ -2098,7 +2098,7 @@ class NavigatorState extends State with TickerProviderStateMixin { /// } /// ``` /// {@end-tool} - /// {@tool sample} + /// {@tool snippet} /// /// A dialog box might be closed with a result: /// @@ -2157,7 +2157,7 @@ class NavigatorState extends State with TickerProviderStateMixin { /// /// {@macro flutter.widgets.navigator.popUntil} /// - /// {@tool sample} + /// {@tool snippet} /// /// Typical usage is as follows: /// diff --git a/packages/flutter/lib/src/widgets/nested_scroll_view.dart b/packages/flutter/lib/src/widgets/nested_scroll_view.dart index 529856a449c42..f729dc3b963f0 100644 --- a/packages/flutter/lib/src/widgets/nested_scroll_view.dart +++ b/packages/flutter/lib/src/widgets/nested_scroll_view.dart @@ -61,7 +61,7 @@ typedef NestedScrollViewHeaderSliversBuilder = List Function(BuildContex /// (those inside the [TabBarView], hooking them together so that they appear, /// to the user, as one coherent scroll view. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows a [NestedScrollView] whose header is the combination of a /// [TabBar] in a [SliverAppBar] and whose body is a [TabBarView]. It uses a diff --git a/packages/flutter/lib/src/widgets/page_view.dart b/packages/flutter/lib/src/widgets/page_view.dart index 28548eacbe6a9..ac8adfeb1c2a0 100644 --- a/packages/flutter/lib/src/widgets/page_view.dart +++ b/packages/flutter/lib/src/widgets/page_view.dart @@ -39,7 +39,7 @@ import 'viewport.dart'; /// /// * [PageView], which is the widget this object controls. /// -/// {@tool sample} +/// {@tool snippet} /// /// This widget introduces a [MaterialApp], [Scaffold] and [PageView] with two pages /// using the default constructor. Both pages contain a [RaisedButton] allowing you @@ -610,7 +610,7 @@ class PageView extends StatefulWidget { /// Creates a scrollable list that works page by page with a custom child /// model. /// - /// {@tool sample} + /// {@tool snippet} /// /// This [PageView] uses a custom [SliverChildBuilderDelegate] to support child /// reordering. diff --git a/packages/flutter/lib/src/widgets/routes.dart b/packages/flutter/lib/src/widgets/routes.dart index 18ba06c7500e8..b9041f7283a7c 100644 --- a/packages/flutter/lib/src/widgets/routes.dart +++ b/packages/flutter/lib/src/widgets/routes.dart @@ -388,7 +388,7 @@ mixin LocalHistoryRoute on Route { /// The given local history entry must not already be part of another local /// history route. /// - /// {@tool sample} + /// {@tool snippet} /// /// The following example is an app with 2 pages: `HomePage` and `SecondPage`. /// The `HomePage` can navigate to the `SecondPage`. @@ -1373,7 +1373,7 @@ abstract class PopupRoute extends ModalRoute { /// than only specific subtypes. For example, to watch for all [PageRoute] /// variants, the `RouteObserver>` type may be used. /// -/// {@tool sample} +/// {@tool snippet} /// /// To make a [StatefulWidget] aware of its current [Route] state, implement /// [RouteAware] in its [State] and subscribe it to a [RouteObserver]: diff --git a/packages/flutter/lib/src/widgets/scroll_controller.dart b/packages/flutter/lib/src/widgets/scroll_controller.dart index 35c1b1f06e186..6b3769e12d7ce 100644 --- a/packages/flutter/lib/src/widgets/scroll_controller.dart +++ b/packages/flutter/lib/src/widgets/scroll_controller.dart @@ -284,7 +284,7 @@ class ScrollController extends ChangeNotifier { /// It tracks the most recently updated scroll position and reports it as its /// `initialScrollOffset`. /// -/// {@tool sample} +/// {@tool snippet} /// /// In this example each [PageView] page contains a [ListView] and all three /// [ListView]'s share a [TrackingScrollController]. The scroll offsets of all diff --git a/packages/flutter/lib/src/widgets/scroll_physics.dart b/packages/flutter/lib/src/widgets/scroll_physics.dart index 8501af508e5a7..631d9028f8287 100644 --- a/packages/flutter/lib/src/widgets/scroll_physics.dart +++ b/packages/flutter/lib/src/widgets/scroll_physics.dart @@ -80,7 +80,7 @@ class ScrollPhysics { /// The returned object will combine some of the behaviors from this /// [ScrollPhysics] instance and some of the behaviors from [ancestor]. /// - /// {@tool sample} + /// {@tool snippet} /// /// In the following example, the [applyTo] method is used to combine the /// scroll physics of two [ScrollPhysics] objects, the resulting [ScrollPhysics] diff --git a/packages/flutter/lib/src/widgets/scroll_view.dart b/packages/flutter/lib/src/widgets/scroll_view.dart index bb96c0f09ce13..402d820fd26c3 100644 --- a/packages/flutter/lib/src/widgets/scroll_view.dart +++ b/packages/flutter/lib/src/widgets/scroll_view.dart @@ -342,7 +342,7 @@ abstract class ScrollView extends StatelessWidget { /// /// {@animation 400 376 https://flutter.github.io/assets-for-api-docs/assets/widgets/custom_scroll_view.mp4} /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample code shows a scroll view that contains a flexible pinned app /// bar, a grid, and an infinite list. @@ -608,7 +608,7 @@ abstract class BoxScrollView extends ScrollView { /// extremities to avoid partial obstructions indicated by [MediaQuery]'s /// padding. To avoid this behavior, override with a zero [padding] property. /// -/// {@tool sample} +/// {@tool snippet} /// This example uses the default constructor for [ListView] which takes an /// explicit [List] of children. This [ListView]'s children are made up /// of [Container]s with [Text]. @@ -639,7 +639,7 @@ abstract class BoxScrollView extends ScrollView { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// This example mirrors the previous one, creating the same list using the /// [ListView.builder] constructor. Using the [IndexedWidgetBuilder], children /// are built lazily and can be infinite in number. @@ -664,7 +664,7 @@ abstract class BoxScrollView extends ScrollView { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// This example continues to build from our the previous ones, creating a /// similar list using [ListView.separated]. Here, a [Divider] is used as a /// separator. @@ -786,7 +786,7 @@ abstract class BoxScrollView extends ScrollView { /// [SliverGrid] or [SliverAppBar], can be put in the [CustomScrollView.slivers] /// list. /// -/// {@tool sample} +/// {@tool snippet} /// /// Here are two brief snippets showing a [ListView] and its equivalent using /// [CustomScrollView]: @@ -804,7 +804,7 @@ abstract class BoxScrollView extends ScrollView { /// ) /// ``` /// {@end-tool} -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// CustomScrollView( @@ -989,7 +989,7 @@ class ListView extends BoxScrollView { /// advance, or all at once when the [ListView] itself is created, it is more /// efficient to use [new ListView]. /// - /// {@tool sample} + /// {@tool snippet} /// /// This example shows how to create [ListView] whose [ListTile] list items /// are separated by [Divider]s. @@ -1077,7 +1077,7 @@ class ListView extends BoxScrollView { /// For example, a custom child model can control the algorithm used to /// estimate the size of children that are not actually visible. /// - /// {@tool sample} + /// {@tool snippet} /// /// This [ListView] uses a custom [SliverChildBuilderDelegate] to support child /// reordering. @@ -1290,7 +1290,7 @@ class ListView extends BoxScrollView { /// [SliverList] or [SliverAppBar], can be put in the [CustomScrollView.slivers] /// list. /// -/// {@tool sample} +/// {@tool snippet} /// This example demonstrates how to create a [GridView] with two columns. The /// children are spaced apart using the [crossAxisSpacing] and [mainAxisSpacing] /// properties. @@ -1340,7 +1340,7 @@ class ListView extends BoxScrollView { /// ``` /// {@end-tool} /// -/// {@tool sample} +/// {@tool snippet} /// This example shows how to create the same grid as the previous example /// using a [CustomScrollView] and a [SliverGrid]. /// diff --git a/packages/flutter/lib/src/widgets/single_child_scroll_view.dart b/packages/flutter/lib/src/widgets/single_child_scroll_view.dart index 5eaf425ae729d..7a9a4b2b3f580 100644 --- a/packages/flutter/lib/src/widgets/single_child_scroll_view.dart +++ b/packages/flutter/lib/src/widgets/single_child_scroll_view.dart @@ -80,7 +80,7 @@ import 'scrollable.dart'; /// with some remaining space to allocate as specified by its /// [Column.mainAxisAlignment] argument. /// -/// {@tool snippet --template=stateless_widget} +/// {@tool sample --template=stateless_widget} /// In this example, the children are spaced out equally, unless there's no more /// room, in which case they stack vertically and scroll. /// @@ -149,7 +149,7 @@ import 'scrollable.dart'; /// so that the intrinsic sizing algorithm can short-circuit the computation when it /// reaches those parts of the subtree. /// -/// {@tool snippet --template=stateless_widget} +/// {@tool sample --template=stateless_widget} /// In this example, the column becomes either as big as viewport, or as big as /// the contents, whichever is biggest. /// diff --git a/packages/flutter/lib/src/widgets/sliver.dart b/packages/flutter/lib/src/widgets/sliver.dart index 70fa5d9cf96fb..5fedaf5ed43dc 100644 --- a/packages/flutter/lib/src/widgets/sliver.dart +++ b/packages/flutter/lib/src/widgets/sliver.dart @@ -237,7 +237,7 @@ typedef ChildIndexGetter = int Function(Key key); /// delegates where the first has 10 children contributing semantics, then the /// second delegate should offset its children by 10. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample code shows how to use `semanticIndexOffset` to handle multiple /// delegates in a single scroll view. @@ -276,7 +276,7 @@ typedef ChildIndexGetter = int Function(Key key); /// providing a `semanticIndexCallback` which returns null for separators /// indexes and rounds the non-separator indexes down by half. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample code shows how to use `semanticIndexCallback` to handle /// annotating a subset of child nodes with a semantic index. There is @@ -832,7 +832,7 @@ class SliverList extends SliverMultiBoxAdaptorWidget { /// [SliverFixedExtentList] does not need to perform layout on its children to /// obtain their extent in the main axis. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example, which would be inserted into a [CustomScrollView.slivers] /// list, shows an infinite number of items in varying shades of blue: @@ -899,7 +899,7 @@ class SliverFixedExtentList extends SliverMultiBoxAdaptorWidget { /// /// {@youtube 560 315 https://www.youtube.com/watch?v=ORiTTaVY6mM} /// -/// {@tool sample} +/// {@tool snippet} /// /// This example, which would be inserted into a [CustomScrollView.slivers] /// list, shows twenty boxes in a pretty teal grid: @@ -1325,7 +1325,7 @@ class SliverMultiBoxAdaptorElement extends RenderObjectElement implements Render /// For the value 1.0, the sliver child is painted immediately without an /// intermediate buffer. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows a [SliverList] when the `_visible` member field is true, /// and hides it when it is false: diff --git a/packages/flutter/lib/src/widgets/sliver_fill.dart b/packages/flutter/lib/src/widgets/sliver_fill.dart index 27d3c965afaa0..be9c59b7e7c20 100644 --- a/packages/flutter/lib/src/widgets/sliver_fill.dart +++ b/packages/flutter/lib/src/widgets/sliver_fill.dart @@ -183,7 +183,7 @@ class _RenderSliverFractionalPadding extends RenderSliverEdgeInsetsPadding { /// /// {@animation 250 500 https://flutter.github.io/assets-for-api-docs/assets/widgets/sliver_fill_remaining_sizes_child.mp4} /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// In this sample the [SliverFillRemaining] sizes its [child] to fill the /// remaining extent of the viewport in both axes. The icon is centered in the @@ -221,7 +221,7 @@ class _RenderSliverFractionalPadding extends RenderSliverEdgeInsetsPadding { /// /// {@animation 250 500 https://flutter.github.io/assets-for-api-docs/assets/widgets/sliver_fill_remaining_defers_to_child.mp4} /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// In this sample the [SliverFillRemaining] defers to the size of its [child] /// because the child's extent exceeds that of the remaining extent of the @@ -265,7 +265,7 @@ class _RenderSliverFractionalPadding extends RenderSliverEdgeInsetsPadding { /// /// {@animation 250 500 https://flutter.github.io/assets-for-api-docs/assets/widgets/sliver_fill_remaining_scrolled_beyond.mp4} /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// In this sample the [SliverFillRemaining] defers to the size of its [child] /// because the [precedingScrollExtent] of the [SliverConstraints] has gone @@ -314,7 +314,7 @@ class _RenderSliverFractionalPadding extends RenderSliverEdgeInsetsPadding { /// /// {@animation 250 500 https://flutter.github.io/assets-for-api-docs/assets/widgets/sliver_fill_remaining_fill_overscroll.mp4} /// -/// {@tool snippet --template=stateless_widget_scaffold} +/// {@tool sample --template=stateless_widget_scaffold} /// /// In this sample the [SliverFillRemaining]'s child stretches to fill the /// overscroll area when [fillOverscroll] is true. This sample also features a diff --git a/packages/flutter/lib/src/widgets/spacer.dart b/packages/flutter/lib/src/widgets/spacer.dart index 65ec084457976..f6b8ad80ece27 100644 --- a/packages/flutter/lib/src/widgets/spacer.dart +++ b/packages/flutter/lib/src/widgets/spacer.dart @@ -17,7 +17,7 @@ import 'framework.dart'; /// [Spacer] has taken up all of the additional space, therefore there is none /// left to redistribute. /// -/// {@tool sample} +/// {@tool snippet} /// /// ```dart /// Row( diff --git a/packages/flutter/lib/src/widgets/text.dart b/packages/flutter/lib/src/widgets/text.dart index f97de8657bf0e..ca2c3cec86590 100644 --- a/packages/flutter/lib/src/widgets/text.dart +++ b/packages/flutter/lib/src/widgets/text.dart @@ -204,7 +204,7 @@ class DefaultTextStyle extends InheritedTheme { /// behavior is useful, for example, to make the text bold while using the /// default font family and size. /// -/// {@tool sample} +/// {@tool snippet} /// /// This example shows how to display text using the [Text] widget with the /// [overflow] set to [TextOverflow.ellipsis]. @@ -228,7 +228,7 @@ class DefaultTextStyle extends InheritedTheme { /// that follows displays "Hello beautiful world" with different styles /// for each word. /// -/// {@tool sample} +/// {@tool snippet} /// /// ![The word "Hello" is shown with the default text styles. The word "beautiful" is italicized. The word "world" is bold.](https://flutter.github.io/assets-for-api-docs/assets/widgets/text_rich.png) /// diff --git a/packages/flutter/lib/src/widgets/transitions.dart b/packages/flutter/lib/src/widgets/transitions.dart index 524a4298fdeab..cac60122787e6 100644 --- a/packages/flutter/lib/src/widgets/transitions.dart +++ b/packages/flutter/lib/src/widgets/transitions.dart @@ -23,7 +23,7 @@ export 'package:flutter/rendering.dart' show RelativeRect; /// [AnimatedWidget] is most useful for widgets that are otherwise stateless. To /// use [AnimatedWidget], simply subclass it and implement the build function. /// -///{@tool sample} +///{@tool snippet} /// /// This code defines a widget called `Spinner` that spins a green square /// continually. It is built with an [AnimatedWidget]. @@ -194,7 +194,7 @@ class _AnimatedState extends State { /// animated by a [CurvedAnimation] set to [Curves.elasticIn]: /// {@animation 300 378 https://flutter.github.io/assets-for-api-docs/assets/widgets/slide_transition.mp4} /// -/// {@tool snippet --template=stateful_widget_scaffold_center_freeform_state} +/// {@tool sample --template=stateful_widget_scaffold_center_freeform_state} /// The following code implements the [SlideTransition] as seen in the video /// above: /// @@ -583,7 +583,7 @@ class FadeTransition extends SingleChildRenderObjectWidget { /// Animates the opacity of a sliver widget. /// -/// {@tool snippet --template=stateful_widget_scaffold_center_freeform_state} +/// {@tool sample --template=stateful_widget_scaffold_center_freeform_state} /// Creates a [CustomScrollView] with a [SliverFixedExtentList] that uses a /// [SliverFadeTransition] to fade the list in and out. /// @@ -1035,7 +1035,7 @@ class DefaultTextStyleTransition extends AnimatedWidget { /// Using this pre-built child is entirely optional, but can improve /// performance significantly in some cases and is therefore a good practice. /// -/// {@tool sample} +/// {@tool snippet} /// /// This code defines a widget called `Spinner` that spins a green square /// continually. It is built with an [AnimatedBuilder] and makes use of the diff --git a/packages/flutter/lib/src/widgets/tween_animation_builder.dart b/packages/flutter/lib/src/widgets/tween_animation_builder.dart index d67597675ceeb..c26cc15b9345f 100644 --- a/packages/flutter/lib/src/widgets/tween_animation_builder.dart +++ b/packages/flutter/lib/src/widgets/tween_animation_builder.dart @@ -59,7 +59,7 @@ import 'value_listenable_builder.dart'; /// /// ## Example Code /// -/// {@tool snippet --template=stateful_widget_scaffold_center} +/// {@tool sample --template=stateful_widget_scaffold_center} /// This example shows an [IconButton] that "zooms" in when the widget first /// builds (its size smoothly increases from 0 to 24) and whenever the button /// is pressed, it smoothly changes its size to the new target value of either diff --git a/packages/flutter/lib/src/widgets/value_listenable_builder.dart b/packages/flutter/lib/src/widgets/value_listenable_builder.dart index 08e9ced1f400b..b82b5a3c7faf3 100644 --- a/packages/flutter/lib/src/widgets/value_listenable_builder.dart +++ b/packages/flutter/lib/src/widgets/value_listenable_builder.dart @@ -40,7 +40,7 @@ typedef ValueWidgetBuilder = Widget Function(BuildContext context, T value, W /// Using this pre-built child is entirely optional, but can improve /// performance significantly in some cases and is therefore a good practice. /// -/// {@tool sample} +/// {@tool snippet} /// /// This sample shows how you could use a [ValueListenableBuilder] instead of /// setting state on the whole [Scaffold] in the default `flutter create` app. diff --git a/packages/flutter/lib/src/widgets/widget_span.dart b/packages/flutter/lib/src/widgets/widget_span.dart index 65a283ef8fff4..ad3407611eda5 100644 --- a/packages/flutter/lib/src/widgets/widget_span.dart +++ b/packages/flutter/lib/src/widgets/widget_span.dart @@ -22,7 +22,7 @@ import 'framework.dart'; /// To properly layout and paint the [child] widget, [WidgetSpan] should be /// passed into a [Text.rich] widget. /// -/// {@tool sample} +/// {@tool snippet} /// /// A card with `Hello World!` embedded inline within a TextSpan tree. /// diff --git a/packages/flutter_test/lib/src/matchers.dart b/packages/flutter_test/lib/src/matchers.dart index 529774ba835ba..ec459395df16d 100644 --- a/packages/flutter_test/lib/src/matchers.dart +++ b/packages/flutter_test/lib/src/matchers.dart @@ -327,7 +327,7 @@ Matcher coversSameAreaAs(Path expectedPath, { @required Rect areaToCompare, int /// The master golden image files that are tested against can be created or /// updated by running `flutter test --update-goldens` on the test. /// -/// {@tool sample} +/// {@tool snippet} /// Sample invocations of [matchesGoldenFile]. /// /// ```dart diff --git a/packages/flutter_test/lib/src/widget_tester.dart b/packages/flutter_test/lib/src/widget_tester.dart index afac83bdb8363..56fbf49fbba06 100644 --- a/packages/flutter_test/lib/src/widget_tester.dart +++ b/packages/flutter_test/lib/src/widget_tester.dart @@ -419,7 +419,7 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker /// [expectLater] call to test that a widget throws an exception. Instead, use /// [TestWidgetsFlutterBinding.takeException]. /// - /// {@tool sample} + /// {@tool snippet} /// ```dart /// testWidgets('MyWidget asserts invalid bounds', (WidgetTester tester) async { /// await tester.pumpWidget(MyWidget(-1));