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 | 16 +-- 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, 583 insertions(+), 583 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 90c431695a..49db3df517 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 2957f26ccf..e0cfdf4998 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 d15804d8a4..93c0cabe63 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 b9d800a47b..9fd35eb041 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 87fe24ea0d..60687bc6ae 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 delta 107215 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 P+h5urBe*8-n0^!hexAl5 delta 32191 zcmX@|jqUFSCdJMGKX+a(DJ}*E23}7OmmmfP=06M!jE6Xw7#JAt>V!sYRAiN|uj%k~ zaSW-r^>**`Xpx(@R{Z}x|JCI6%hS)@v-+KS?pk<%+_|zZJ7nF{Ut9DUGj}DOvrKna zRqj%1QgL)J5@Kza5%T-j zs$juSRaKsQUrNjRto(l}XXARA>i0SP@#0JVul85GK0mk>oPd~K&bLe|(pK&KpC8R! zQg0Z?{pR?~j{S^DjqxUmkKJD}PU$%eAw|n7>las?%msXUlS+z6!W1}@F@E~FLJEmfSGN0`1aMOo}G|$IN zeg1d+_*(70`{C0C-{!r0WzNT6VQaFe`lDy$;$O#hZHrrd_1B(lZ|@d7+P`Sg%KFp$ zzTEfJy|}Kw%74?tARTyMzP$8)+vjH|Ud)InI)7mH@0m}v{o7{iy?i=Zqgz$%+MnX@ zYxn2!TGW{bi|pUB&sqI%*lJUQjTzt6;=gBqoLk$xs?R+w{LJm*?C$cWJr;I(S3UP% z&61Uq{QAjv&fAB(3+g>0Yuoo!ys6J?(|s9VX5tg4ng8NXS@;K?^7*~ta;JFR-0v$O zIY!@XebxR|cPmBD?)oxgsr$RwiV2HPZJ!W%D`9KYZ}#?*OZTsRezpGm_uA_1ANH*C zt^N39ug={FrqExd<+8H1&0(vzuKvGO_ho(Db+y00rk$;OwfkCp&%~p5>enAthUUg2 z)AjytzEk_}ov6f=kSiChSNN`#l;3W5YW+szQ{U$A&SzDz*&MajS$VP5%l-ch;&*ST zdE@v0_^rYNpLAFI*cjJ+Wo-Fu*+IoO}7TwS($CKHmLlj7XLP9U$DmCsk5AH4^5m<@^(V};xFEu7au%% z?sLu+T+}%#{8jtHvu9(}+N-*EkJ;O<&z(H8>i)75{JjxtuifcVduzmcRX14s@8ie$ z)nERvdUg4hGVAYL&-(h@?Eb4+x$kS2$}e~`yTU@{@8dPs&cn;k^D-ZQUVU^SGL?6= zpX-TkZ@yNy)bJN+PjX+%3GDx0mcC(+(1$#;`6tx0wL*&jch zdYoQr)cHP#|9(r8ROQFVI#-d+jj#Sy{&oMq`qdH7U))%b#*4 zvqqcSf8iJYeY4+v|9YXr%4vJ`gRM9AtUbAtYjyNh&YfEx_i(R@_IR%du2vNGmAst) z^xfyT=N_E7#ForCXHVBN*6RDGx9pr7w5IFFj~!ntb8kPB?svIxHFe38|6=c17Jpf9 zEuTB3ZmU-Pevki)|IC_jWzxg)&ul&Y(etlwt$q7){l3?;bMu$}pT9f*G_{}&#sn|mEOFsd#|IWUd_2pixUqkFJ6C-r+7^RcM1OgEW@Geg&9bW>x2uR>+6_x1jqj-IZEl^2KkmVDv+bwu3nzIokl?TU(&l8ls+Z))*=+Dq!I3U60# zUb%Vy#?Aj{=QXz#TtLIcfRz z8E^iGgvaGs@2wHK**|&Vlhofoc9@#%o#OjYq;#!q*lJU|{Z(rF>#sbH`g7vNjn(Fd z^Q`kXam%Qiti6)8b=%iHzgAq+GTVMBYpYr5H|u}X9_=byef8IpJ%vgCCFHk9t(~23 zll0#IU)Bn%{;OHCl7Cn4-n==#;McYEi;dQwbf=xIlTY9Lp>ST9$9`=cyNd9>ZLHPK zCH21^pSSoKTvqwG<@llxrk0xq~-48ONT>2WkLG-w(91fCtsUZ ziM?d|d;40$+d9vQ{&6wgwZ9BK{+F0@?`D#d=k%PvTUX%af1#!JY9NpC@%5gm|5gwp zJlpE`+OX`LJk?9@e;k`B`HgMqmJLKfZVKRkvCJP~&0Ey0zacb7wcp>NR}X{9V1$RHyQ0-qxtyzv9n-_+_E@_wrqx zp8n{yVXKdCtyuEkd&l zjD-8gg-hypIsV$8@p66U%Z*WMHC;_G|p()lo_UlaeGpRsUa;OeVYc1r9o-GA*@ zcsYN!Zb5hXA+h%@efu0&UyZtVLG%CJM{^UbZiLHOo@BCR&R-Lj9q2pzPx;lC?Aw<7 zpYC06$UkpS$EkG|g0p_wSLff3KRNebzw>49$z0j`uFwAcPT9e2Uwn4v3GazJKl-mu zF4jKp{zSq)<>kcc=sm(=GW+vi3#V-U^D%u+9kbky;!kncn$`7%xU$ySpZWhcYtCkA z_tb6e>z9`|-Cum@`1x0dj8664Jv(Fj^Jy+nA6zJr5w&nQYmg?uX z=N^pSBWxDawe_>&yX*CjwpXbCx$8au*^YNLB@Tx+A3y(!NoZc~4w2VR)wT~`accM7 zzyE0N0S^={Mt z&9*h>Fr!bng{2u&RE|6Df^JoscpYiB`2rme%!kJzu5bh-f+3B_?XgP z2gTmAY>oVJ{b9iS9Zl{(O@B8B|F7R>dY~d_{?7kTK5pK%V2P6cd>8A;S$*4WZW;e_ z$w+f@?5#hvIdr+wm9IA+&Hb?c@WN&JGynYjbb9HG*ZiM_xw4ctYoEJ!KCa9p$LZz& zQ4Cb%ACJ#3jNT)>#s0#+ zFRP{NjTIiwtcor0{k8wom+zlEdul!@DZOr;?*FJIbesDA;AyhF*76gDCrAI(*#9i* zP4MNjpX{si^FR6pY=6FKabkG#yi;!5O1JFLVOZ_w`s0YGipUk4icg2aHZRyMrDs>* z?pGo)yu!u@4t5Ic8j#TMWz1fAKu50ukHVo-Lp+a`oiC+8pqJ?T^}A? z=-`g^O@C)!X={@7=iZM$S-+<}6An*!ZE^9gj%e6+ui!c6@F`g^ly zN8U<^31$C&?%jcu%DdO*E|=LAwz~A|O!ixwm+kbf58&}?fd(q7n{g0O}hC;d|s$s+Ks1&l^0LXxidX)&!>Wl5})lgg|WZi`0o3Z|5*0= z*(J|+r5(xI`Yg<(_UV%tC2zjgTUI^gzwEEod;WjKTyFK7P4>>e&E`L)%0K?taaDcY zfr+A@cZlWJd{Vftmz8QGm=#rZ;HY9hVfXtGUw-A<9q_kN$+(eL%zxZckP1oo+Ta``&q-?NMv>rL4l|S0>oxy}n(Y`&HdamEpgYOxB)j zv*k|iy8H1*E2f(zWzR2&3vBI8s4@4g7)U5 zOW&%!nK7weHMHflw3V^9^qi^xgcr_yRe9suXRU<`)K;%?{2Tjiwb$tNp1mV8z`_fqxiu4i@cwmJL^eEj%Y*Rpj_7VUbzHFuTX zjrx0!4!v5L3mRkDv%300savM=tIyMOZS(6*S1hegFuJ7AI^(H)rRdrIPuZtlSzi&( zefV#J`qSP|)!MUn32|l33o~0?y5_H(=qsP_Yhm9iyaMn3J@aXfxbLfPmX-S6+r!%P zmakOLjE&B(@~m}#zo2TT(bRvd4gIeM|L}}VPRnfmV^Vo^<>{05+t{b>$ zv*%4Q{kE@4dHx@b{b^rkvTxd29l!UaUcQgss@2)mw;%EL_Pkni=;pNaZ))*ZMSiol z&kHlNU!OhMIHTr{*6M|m|DBw#pMBna<@X7Ho1JGa*KC})7Zak(Z=ArC$JOozxwWUsa5{cy_@_0PHnak(*n6~MaOLG!lwWF zvoz~K@B949yYDQ@%$@xze}3q@=lFAd73&t&zka4J>`lR?ymPDMSFd}XvZUTfyyM9t ztDh&crqB5k{`Pt4+by#WwMo7FuTuOgRP;jGN4*=;MiwSXKH||E%w1;f|J3I9*0}!T zSMlU0Uw?hO$9X;d$K9j;-(O!j74tCi=`Keb|5H-FpS4peOPNG6?;bmLyp;deG`XGX z@mVo@InB>)o)vaCbHTSeFZQ|a4Sppp6ZJA;-{hB}?qOTktqrffI%n@m^R+*g*6hn< zbv|DFEA%#pm)0fQ#?a_u_hpq~_3QJRqs@MMF0MB=vs?F8yD00u$M=-?tIeOaUpTSi zY8J1rc4+l8DeGS;r?Z6<{_Xr7=Ka0l%O%O(OG_=PKdg|--TG>NXX}zFCtmm6vAa2` z?((TUr~BGYx`uoUi9WBLYj^(sHnxuSJw1JypWT`!&p*Aqa{vALw&l?aPCUBtV@KJ~ zn{xXuois5qT2-IcdE(P6+qHhbw*OW=*}dzLw7A@p6Q-fnLH>z;`-5-We>%w>DEv03 zZL{q^tIc)0e_cp@IsNRue~+qNi>}`Dy2)`p`F`~ISjPUR>t9WL6LosA-FC1k#rlFVW|0eExdF;z4-;nyI$CvcCEzf1!e^*q8{mhRYp|dwys#-rS^V(Rm z>6e4gS%=AG&e2j4OX44W`2CaV)xS$K+cq;P>@E5>ynY*&*|| zP-m_G_Xf|8I{Nds=Pvp?ajvx9(Njsw`kA;_MK75jTC1wD(!)xzhg)6bO2+x0>uvr% zoxI-VsigS64+`#2jvee(_P5WO>Q?(T?MB6|4i<0yHK&zNUOB>ccWKCkdv;%6&f~sR zU$0ZL=iAHbCvvm*-&!Vqb<0gFCmBhFJojI|`3sqayRR(Yek^Xz{%y0LNvTar*)@;* zd%J}EvX!xp$3pJrZ)06~-Z_NzXIk_G4ZkYSy&tvfuk1~Zxve>|j(z+7sv9%H+^0^< zJ+#mK_oe(ZmNWOB46pr@WL3H0j$HWmlHGSco%!}*D&H(|-nnIcVr#$n|Eme~ufMDr z_*8O=S!mGK$>I5Jy|JB>_*dqx*>_h`hbzhI_KQW#ikLdbAxW*Qg+MxbNS=$nO3c#OXGjnM7zFgDU~(%<2-Ql_sz0*OO3sx zOLp#_JiRVmdXaWuWtr5jgXO$;RhHII66bJVa{u7vtY1=DOa2Q_uFJKbY-SoTJ$&z% z6SkGE*Jm%iEdJYT*T++b=ZO1$^go-O*OAN9+mj{#<+R}b>jrOIPqf!tO?_#r!KO# zeeFiEK973WQTw}yXLZ<+Cmtt9b%$EsyE^_jaqzP?pe8qOMh zS@wk6yA9UAr*f}W&;9k`#EQ&kuRqt{GJCmXPS2OweEXwopB=pYrR|E4^>5ee-kwwI zPOQz?H1)pb^NHJpqvRaSZ%I7Z@$;DS+%Mky@1A%uuvu&^;-P8c8<`?@|xeL zgFj6-lXE?ldOK_Dt@;0t^nJNqbwX43+ld!5<_3EHl`1UU_B1fn`}*JY)(5s+vj6$n z)i&o(z3{x5d^2@dzc+aM(meL$>Wh`T9{OiBP0qaEzU_Xjt@|>UUr(Li~!V(XR>qWB|ZJ{$mq?n|6UiY@cXqi&?uC5tr+_Z&POUs?|*!&UwinU*)>PmxjC;j zW(E9ue`5#xveB;xJ)<0X{HZeZsof}pEa{j8%uJcay_4M7;%1_-g zxi79bed=$qT=(WTcTRnmjtE{IR_(CN<(K-M8Ns2OK2P^Hyw&|aCd|@_q*&jlX^K z!!BPBQ2slA(wEySFYDL0&$=~L>HOnk$JgrLuJ)a%9=7cKznrT9pZl~cW`uv;vT5gv zWouU~^EK)z^__i(v!_3L>-Oc9Q_t>t7Z24!f)+ue$$A%&%HC?Z3+pZMu^9!&KMSu8>u4%4MUebyvmT-kDjy;Hphx4=yMAJ6-lN_L9CbU#)CWY@FTwYj5WS{(36i z?(UZRmPs)0a{8&sQ^18?NICzWZCmRnZ8~r;I&+=p{}qbeJp35ZN2c zSl_Q+Y+B+4ji_KHP%ND(+UmFeMDd>gz48oW95Z z#r0OMDmyJ%EOBM`ZMV%y3$iTq{?>oz>Zy;))sa|!%*1nlPfdV#{fbhRq#|u~oh!NV zzpg&t{O!F`%JmzSQV%wLvEE(&M6tiV>|ds2>l)oHi_~uUN#t4Q-}>+BxAxw0)xW3v z+H6-FYF=8^wrkI<(@SoPmo2Hk;g)F`D-yD`M&o7p^~ysV?Ab4z@z@`%+dpIGT))D( zU;H2b{B-{A_AQTPkE$1G&+7U1e$Ctyf=kVQEb|EU{o3x|`Ne;S;qrnay-0cg_bn^$ zYHqH#ttp*abNtxx)w6c@e6n5m#e3qGXY1<3SsuvWZkDMmG243SeTcJ3qVxBkp8vmq zx<$`*{(gPCciuhDvJF#97YI#`UKyt-#GQT4{YgbkcYLv0(b<_Eo=;7@_S;+uiBT)#d_Z$tHi(g?SkofppVPEUHe z_{lAU+Dq%-E%>nJ)3I}PTN&kLrHc#V_=8{mfBr7I%q{TsF^QRd)^mEk?A}oRMDhHM zA3J)2ewC$fD7>=r{$eM~v^Vn8gvEB1m3_5Sd>LPD=OtSjd;Oa9gb!~V3SRB{eDTxe zl=9W5S4-cFeA$0~ef_rm+&NFv&o_Koy?u9ebI_ahOa40M7%Tiex6Ni!+G1I*ocLeM zU)5af`^V*@vnu1wm9T%;R7)+g)tlQ2)!b6{wXS-$a!Q@#?~L?hzo}o&f2)}7r>2~{ ztY&%5+n4p<>b_k*^~}+i@n5>>+FRPsS}y6w{?0nJJDBOi*WH&m`uy)$)`wntpWwX2 zF6ZZ^CG}RI!ua!)x}8;)5w&;3tpDD>)?WE%&AEef>T-RBZYo@2oD+R$9wS-CW2|9q~~vz%U* z=e}RTUwO_oWp(7gzwfVSOtyBgZr@n1ykkSv{0U#Ym5zLPG2)gimLwQiH`)A&tQC6zU}G6_*WHG=cmlkH=958r&`&b)u~J7zCRObJ@L`hZ`n>B z+>7H_m%02>R=+hPSoQBK)i}9(ey{z0em_|-^P}^#-32kfmcDAXI^MmRNuht$H}>V{ z3aa|+AM;N9+xD*5_x;R1Xm;y5{mQGsx?6-P`+e=x9}aPAXWcokGk>>kK$uUsv%@Rx z*Fpbdr`2g1!tkP2bb1s zbriZS>G%CLH@ET$=hV3mr&_(7Kk4()x~k46Co-kw)89Vvj9ffdG5VA4C5cs6Z(q5@ zH+f>6Bu6$l33xxBUZvps-7j!G$K%IgTQ}D`y`1hGm^*8ZC`0A$xyE_R|379vxN=pH z|5b;$aqXM?qiZ_e=A|K-y+UcS!x zynC+o%S_PPY|EVgCd7V&=HIqn<^8edshz+6#H!7k!}ro(e`WpGv>Ra;r7Nf0e{sO~ zQ1nZ4lNaZ+qMoiw%YJ0La~1E+eQ$QE{ayD~_O0{0(&vk}*4HL)=6UL<{pQ-Q4gK7! zzpwPz|9rPr%dQxUuS=%=U17U&>8{OUopb$Ar1j1(de_fg3qJdLWB&3BQB_ao>6KsH@?vJx zlr#IjtPU;7$@Q6Od9Sek<#tmY$9G4zgl|0geoCtQ;kdn$@8o5SYQuh(uXl*OS~KzA zy1LJYq_g}MN2#BUWSkIU60PcZbxKuf+oqG=`#1AWyfI~Mo8Q_EUnY9&|HyXfCbTj7 zcv4+u_r}JuuwPdbrz}oRUiMYSzcuw~sLAbD+E>k3mbI_6@}B=vIjVl^wC*eIX6MwE zO#k^VpB7QB80Fi2UH08Jv%Z?{my+61Ia{N$@9Q5nSG}bFbvFBbp4nz5m-;f;x7~V_ zTWQ*C0cwHda9vKXsrP-Ho~*<=ed+zJdl$d$n%2E2v)8!v)49EA(_dXpm)n!^VvGH} zGmw;ad&dLaS!+DseZpLGQe%kCEwyDq<7_)v+keQb#f=D6|1>) zkE*wLkBaL9TuKpOrgT$N#?0d~oG0D~Vl8;-aP9^ZeF? zy`K5oe+#FX(Is!E>-~1Bm)6@YS(p3v;<-1!r!KF5vzzh4Hnn#bmA>xxRj=^USrcgM zP+jk6EB~=f>D|GFg6>t$b0>icjBkqlh2~?c?x|0? zyxz}ry)47tZ#7e9)#dKtoFe!1my=wXP_;J0h zdgX^Ft$&~Jz70J!ZTgN4f3Nnfn>79Ht$m%M$KRiBuK#ziQ>*`M!a(@GZDGHvQ$9br+<1wk=DO_in|^7TY3%P`NMDI# zzdpBLuF8Cu=X4(B*?BoNG1h4>r+XVNTE*wJ-|FVfvgEqWx*o@FS!w^hAhCSU;I-7Q`R81-ZXe^<`@88ZsH>Iz=uqa)wM4 zCvKY;{wV0vYSpJ9(|=ipTKDtNs$#7cXSjinyj4tC-3RWg0Cj>a+0|( z^;m2VFmc>QqJG`X*ahhE&6QD*nRqkU=pwB7#I?{9NGZO(6-z57>v zXmvsE@72W-r{dOSzm~1qKD|1A@5}pZzW#jtSdDqE zxcrXAvHO;0JLEE7oqd%P?24SYscU=dHGkhKd>Nkq@YwOSxwh-Ce7$~mrq5NspJnMA zqSihCdch+$+ut>L`LEl@kKfmRs1Sa8;zh%++Pi+mo0orGonBSxynN%{QZI&mcSYBT zIm*dN=DvG%JubWCyIHUjXn?Tj@cQf*SJo~pGpZ|iSwAIy@w)ot^!l*K!zq5+%eV1g zvafeu;s2!f^4U|3Ga@1$ANmk!de5%bS~M~K*V3C&<#xAbC*l4nIeX{lzCK+0h^yr5+Uoedma^Ym-tIBE zw!rkR#iie?*E`u-g+<+exb5?@s?`g811G%S8a(5s%IErjC%G?I&(OWc`6@@}medVJ zO;x^g220=WG_TF7dG=2@*VOzb_syrhedh~u{(tw1UN3F<=Fq*1a^EVap8YmI&%Q2f z`C4g>rFA~)9JBu%48D6QH$7nMl2D6BTQ@D-Vteyap|#D#FaKW`teD%lbJuNk{rN6; z&qy>oD_`2J|1_!Ra&~>qZtWfW_J&t;@b>o{dlI(FdGCHR8@^kQ<|=HiSY>Er6?XsL z>eW&z%j=gWzdW6F{@rcq4bSz}cm7>(e;dJ>?Xg$`&?{=lzv07f%UBMBM!~b@~396JBQ* zW~}}>_2I>1y*odp?1<6H>Gd@J)~RDHRi^vx<%8eHqrV@>j+WJ)d|&f^4tH05lx^CK zNsCwQ^xl5)O5>hx{yP`N+NRYCX74`My}6!AU}~)4pSs<*Y(MX}kMxpPT(^PWG)t3BCDYe!22X{s*UC zY_w+2Un zU#Gg0@%4HAMt4Q(Z%b`BYW?uX-7{OCFWxur2*dHryVib*H{Wdkb*6c*qh_34r{14M zFXQ&|-{W}0>2*_jO45F*y?NEU;=AojtbJweYaiTw!ny69QGNdTwYv8>*_(oMZM!!Z zM{i!cE$Q&m8^MW@^?xM4pWU`V^QOq@zP7iVUN>LV5 z(pJey>%Q*Wdv}K1zRCMz>fdoy?794Zqw@D@lkaOTdbXQ+vVTk3y4?b~zm^_*WxM*k zjYXw?_R){OFDo*9{&vTzLi_Ax>%?QXu5wB%-PNd!b^g9_|Do-4nleh2Fm+5}@o3~%OA(asSi*Z67Lw$pO z-|_RWuDD3Wp6h=iXEEtoPFD!4qv^5<_49f1UstBi`lz(?-{Z$>Q~4QQKKEe(EjDS; zmom-Xziw^#Y>qGQCqFbwNGS1%e|xI%(B@O|{JlO#@0qrEXrBLASexszmFr2m4ZFI+ zUj`3*hKAQ~zSOVjV|^nnvnu0F$noI5{@e9BbGYPN*4zG#Hz`@=Z1DPa_14f%t6yyP z`!8xXd|_7j%fJvk%_Qjhwbj}xN~S(HEaVjvB~xqPi)Tnl%WpTW6Iak#e8%ssIKvWo zh6mlrPfva*7QDGXzIXP_Uw#IX|K5r2FxPnM;qhyd^THh74TtYE;DvkiUM>dk z!moM;kWK~$1_sL3k>OuP_Am0C-OIbNmCbwqzmGZMzDd*BYxQTg>hm^w^$%7QwJh1T zZO_4bymlXRK#TPmmfTnS>HN3#Fmv{L+dm#=sWHjL4?i@#zg*O(<$gl)g{F+$4XH_s zY7M`*<_1N-{v}P}o2B;U8@3lzB-CFK-o_7I=&Y>xa(_%$VlV>(gTh}A z`%C=u)hFH*4O_i+X?8=sFCzm(!xv@nLU#rfrpN!~dVj_I|9>@qq?axd>!lx6ul!Ei zzur23&fAB(-&NhY*lt<(^Qm|c_x6@0f4Ht%1f_2xUZ|FS2)uX?{j+Hz^Q(fs70QTOQgmin6Oe|f$N%S`{bbortBeR9j+EpBapC)0QG+d180ey>Y^Ya%zw ze!ukR(`kR3Q_=OxdE468&lQa>vr6)JdDc7UQnr6r`Q7syw(bo1SM9&y`dpFsdp0E( z?)3J*7k>Tu^Vfyk{C5p&Pj?mb_Z@xu>*;j)?$duCCQT`ueCv7rw|n;<&8`3Ne)7Zo z@UIy+uFhEQ*}8SQQt|&%iz{DrrS*>Hee|2LTeo1^?(^oioBZyb_R?CjS7PSs=$w1= zqQ&K&9C;FEcV@L!nR)WTdlObhG3r|Xm2Y1*{nV#d?R(1CUK&Xl)&2h18)}VXLp+s{j3}_s{o!`^RZJfB*TN@%ha^_nkR18@0VIW zFZFc)-Q{c985oxQpFF+p{hdvR9y02(Iy1+W2l?FJ`Zh1CtiHdn^8Fp7?we~59da%g zijJ0zyf^L3|Kj_(Kac$}uRZPeKQ!UX@zWP8*Z(e=FBA9m(|)s`r}qEf9^UZo@c){i zntBVh-3c$&Kiz+~*gN)_Q`W=a!|cy^zO31|X!@u5>yMxOb>r5yPjPQ=o#L9~tvP4E zy~^6v!QXW|*RK8iefEyW_3!!o-oCh?JLlfrpY`AFl*RlCwzlSKXXkUV|M@U!${ug; z9Oun5{%*P~ICJmaw)d|t{p;Ev^XCuq<2+p%xsElt27l`nH`~^{pK|SmSlzE(`ER$j zGq&n;wX?sQa_z-EqyGoyE;0KX{)G42tGwqqh4!28WNqD-@gk=7*}>Nf1z-OTynpZa z*=-7Uquq`lTNAeW_tqaxtHerA9$Y9`+PL#J6Zh)qrpc~5KICEfpjUlx45EEE;}_f!38X0G@Z zr)FQcWwr3j`P=f7Y(HH45k9AS!M=T(KQ`{DK6t?)CfNJJX0Fh_P)Sp-`a`?zQ@@qD z@6GAS%?R4POa980)ANhitCd&9$DOQ^`?V;{Eb!rn12dO2X-@pNAYF9P-IsUgI=W6} zY}KD+eJl0hl5b{r+yC4@T<-dayPbWK^{x7Ru~565oN1w_BwtLN|9;1p`&#QJeLrTp z^@ok_?yq~a7BBaQ^yIRRecFMo&&dSM;A1~UF`c-zPsIM(^zDs@lUdeyY-$lED79UPzwW?x= ztmb&Kp8H!{$G@nx*XA{v?-cdjSQ&a%_wJ`tFK*13p8rTC+#%%O+fT}i&u2vicfHb@ zz3Yita!F3k*O}~YFZ18M+8(tw`SIi4xqqMX&i%)E9<={q`nB>Y*UC?D_4oCjtarU* zyH_}c)$D#n%C47B#GZOaF21w&`bg>pL`$nVGEKd&uqO^xL!VGYOT>eiY-i@Xyz})VX01|M%$z>~+1k zuHp10eVLv*|5N8xL{Geaz4!j=_40v#gT6Igdy`)MBhI6GS>2S!m-MZZp0;|to&V?4 z>8t7bt%sS}7jNELfA__AkAGEqI|F`K-P?VeId;~y_l%vJ{v7?1zHImH=k=L4t6!Sf zeSF1#(d&N>|NWL}Vmr;Fi{8xpw$nYRdiEcIx97Gh{}lqYo9elIwWnSW?t0a8DSvC! zZ?^WHoBE}>dp})Yute$Y>(zd)D`x%M`fN`@BCFUNUP(F0tx;>A^3E+bUH;@(x8bL% z+UoUwzf@1Xvc6Mxuf%3~eL=>NtgUwSt20gaJ^jAA@YBrK=l0u9Kku3%9=5$ICRxgY zfx+RIed^2e@~`4cRIbd}Jn#Q9|K$&+U+U&+XWztL<@0&Z{4d`{`1oTy{+{M5zvo?F ztzMvdYe!8$VCusU2PXfMi@vn~!v)#E8=!LV{J!alo9th8)@(BD{PX@c(^Vd^;Ftfe zey^Ws*d05?e9^C^g|^S%@=xST%k}@0vc!JPqI1`-?f$kT;`Ukn)AHS?O(*WW#U{Sw z{*2{c;%C=PKfzeQ8O>_*ZS1yCnje8>B=u-J2|mZclQy;m-YMSXBv5_to^a{OJ8|9i zOb?#DA^Rr~n>($3kGQBzxJAJ8r{)X`10Z-Sj4UbemFL@YW&ilu|EC%EbE~Mk&%Rx}d&w_1zm+dP71=Md&8fe3zr(ne zYssW5*OpDL`zd-$+C%sHJP~m|{v{=47D|7&O$ri|-JyJ}M)%uFzhA=K**&MjP0GBS z`qr+mo)WJt_4X5&j%|^DTx9*lnuK!i>kU`4e6`kG_5APm|M<3Rr>1>beZS65$^HBC zhZhZ3UzM8pwdt5F1H*%2=@Z$%u1^(Lu0MKJ=8uVFpXAp~fzw%vz9jao-TuQyms@Mq zpJ%aAOAe#)ce?wPE8=|och;}k{8jWE-;=9pL7AL->$GI#IB`J)4*Rv=URE#q{0|1NA7||kP7D=#p7(NFC4=|&s+zj3e!ogr z{=8*>*QYA)_2nyTW*mLrcH3$#*bH~ort-gBe z#!dUze+`d(n#ujW{lX4r28J5JOaITFQz%^jll{xz`~T~+H_xvQxYX%hS@-klcde|$ zTCWaiy;5;>)&BeGTW?*zOpN@+N7kvPuU>=(KMuFAZ1&%?`BJ^|^(FODY?Ef)<6p6) zq)dd5|A+V#|Da#K;R(}rpPzc>dFx?jPThLX{XO2>N+%n%UaH@`VpBnd!m4!#zpS6# zB!AoRjcIr?-|>|A)Af2ggTs{D8+mSA)dL0LYsv1FUrw8!(w(6B>O%VOr`GBv?_jId zXUF}j{cDAeZxu5#2CR{gtX)iue zSNo5B^?#`uimkOPUh^|Bd|>t5pSAAwy8ouTzSLK<-Z`OZdaZtINZ``?bKe|(|J}N6 zNxZkiLeIW~_TTSL+plL=mG8C0{(K|n+Pvu@+4I@XG<@m4JilVf_d>7#jW5(A+kVZf z7rk~xN53+@Om4}GCI1U@`quVe{do4=f|DNgRi1l8ZqEt$b@hmJwCYb*&8ds+cniu{ zPf1&?-Qhov6>bNaVmeRuVcHK->;2~~IoJR8%>UO@KlQK! zn@7g<=?nMXT6o~w(*G|G%lvF9z5e)(LE_eboO7eAu5JCPyKTw;`MdKw3-qlDj-NC4 z@~?)aLJ})3PUDPM`m*qU!v!=#!i7 zt5;U|zqn&$7H<7~iY~}G%CQg1+RmIS`aZGh+ww!3Vxk+*Tw?ou`t^)GU)JxJP&PNt zu0QX-@^$dN3!a-nLC@;Bf5+TwdzZY}xAso?;xDH^mHk>(|F!ms;FKk4X|KJ?>NbB~ z7S;2A_V?@wr&;zc+o}^g;a~Lm)hVa6qF-CyJ{-=bI^SC}r1<9B{-Sw%zIe0m%$#|e zU;A%ktA2{#_Q*coCwGM>YMy72neuPx@_T$wuAVzkZy&#lYxc~NETYM0l5GIiUf zeC_G6A#Xh6``6Xie%2LM|FPb8pV5a9?Z1;gOul$I_1Dj=tbJDhrxzBj`(Li-v@axl z?&pP9?r*6N+;Y+Hq+jrJF>PHLxeI6678Du$dV446|Mw5El~4DVv)`6_YIFK-`q!y5 zPI~V@b0gFsW!}zzQ(|qT$ImYEy8JYCoBrERujb?(v%Gk(cEP@s=eKwL zD|@YJsqr`V?|R?=yPlo7eaT$i$yjzGXeu};>bdr2u2rBWcKz#HYr|eoSoW=Nv-XA` z4`M4-4K`+UExrG(x7|nB%*d+D&?tNv?=oL@28JItOZO*aJotV2*GYHZ^tMUsQiF4O z*H>wtw!acm7qUBN`;4W`Cv6yRY5j8p#r@{TakC6(x@^k!F|OHnx7d4b?kUHY^WQ%F zy=49Jf(nI|YrpO{dud%Cx&P+ZZ;j4H?z;<8jlj_ZP`~Ub?QW27S zxP|%1)tws;ZT7h|!Rxj4k&9bbr?~(6UuqFzbx1yI+5MoOZ(lk8T=!%7)ya|dj5EKK zm*nJZym|J?$_;DwbfuX-yeIgwKAP>ywo~=HwIjlU>Z+?eZF8*{7!Eww{2S!__xbC> zRW)lYzB_D+{1o>+bG1^}TTwp#H#?>;+xMgX+Z{gL^`YFWGM2BM`}Cb~*vD_Ww-Pt~ z&)$6hY0vgm%jdp29r7!E=kFhOy3<>?xBvTEzxPwZ!h{!l4Vksi*?YWx6%u~T5gd9K z-{;P&@=8Dc|K{g#*2ALDqjf7?V;fI;{9jXk^mplY zvCrSz?`W3@eWw_i^9%YEwV;m6wk|1W#~d=>T5=+o6ihC*N6`2EG#EN?Sk zeOXa@sowtd-RJkZx4WO)`Q-bu7oRx1COtO$;<~o^l78*;`tMwSv?Et9ij3p;s#@=V zw-0o{fTzxyiRDj2P0nAtBQvl6#Khl?2Nw#yEoKl8doVlKv9{TH(SzMg_oVFwem-g4 z^E4=B-Q!F3N+!YgwmzJ6w(z{EuI;O;b(X@JF%P2NT)yh%KTd^5508;J0A!?0r^#b*si*5Jr_Wn29`iAz*kGrnC%`dy_QxX0_J%5Aw z%C)BZcB;O=+y0{F+_W#}tIV%$OL(E*`|q90j9UxmnctXw<(}G0y-SJj*MQt_DK=eu zrAzB!=9zo%@=MpxzUmujkYZF;`R|{=+fSakxvzYuR6REIeEI)=9OK8cx>@%ti`;kr zn!LGccdBvSgjcp%g3Fh${~csy9b{#FWx1R9rFk!d7M7SBusSnm#?Cb|Z<0ydG`IAU z{q4iy%ebc9pLgZjtSi@6$<=+=e%*6E#b;@KN=Z&iiBHeA)&EP2!|V6Y*xM7abx-`u z`}@AsKYjUs%cr$#`g{A!zwlk#{+)0CZ_sY()qbu%MXaC^iu3nwuWxrtXEp3W=fd}OJ^f;*)9imX^zCz; zRSj;|`@XEdtX}$s-=*F@kTrbmiA<}WqKgv)LXTegG)vI*>-{%8w;l+uKYj7KRPMds zOaETpZEenKZ{{0mc=b_!8C&OjyO-}T-U~cpzJ0|r-EaS&PkwaN{r$=Mt#{XbdU$=F z$nBd7|KG>BWTm%%V}`WOd!II6k>>xHId%E^-|zOW*j(}JbbHNm&G4-HdRCRwM=fSl zY-`U?c*y;=%!$Wh)3%5Cx0zDrY{~0r%~@(IIP<+{y}SFv4+l=VKRbFomE~Kr)aN~Y z_nC!yzZcct7E^ftD|>C*ugSM=O`G2vpuP9quK5dpuc+nUbmffp#{XCP`c%~qEqW!z z)y|$bJ>+%i<;(Z=_s8s=9{j#cZ>e?tluzsW7RS~+@JmkL|LW|ee!1*vOO?y^{cPL& z^2xb7^+rGZPF->G^34Np|LZC-Z0$EiPm z75nP{)xYQbw&Q2T-LDqEg;!dg{(tMu_sjD)&Tf)lz0}pVX_AX`?C%3N<@RZxv%euW zYuB@^p1&{W-^=ZtEnV}-{Jz(}=lgD7-d;X!9@qC>lOO%?NjGjddb$2->xta*;NE1X zHwO9jC$3GHGF4pp>bk0()jKCdWn}-atGD`7|GnYJSMx_XyoipU)i(E_|QKVRt8XaeYwit`MlTXiJU&nVs`X+|Iy3w^O7s>)YxpDZ z&FdSQZBDJ<7`4`S?q8W+uqOBR_`03-54k7TeUCL)RaDurqigM#i5s4{L=?I2&YU*o z$uDsp-kROd#V*-@u6g=W-_uuIx!5v*5i}sw&uyA*ziwsfxo-|@V@@gD`eR*t;a z%u1rM+-+ZuMqj-&=lUjZJNxJVek}c;?O*@@d1^R&k1 zsQR_KvGQkj+W+9Xkyw!uvR3(taQK0PoS=c|dZwCkrJUz~zg!JZnzQO1lYGnnx1t}a z9Tq)b`-GK!`F4df(9!(uyPNE<=>L77ozNc3*zX+VwWmf{JyM*5m_hw|(9k~v>h5pE z25a>%E$Jl=4Uhh99p?MQ+{Fn zcV);q0e%Hv9jEC&7GGy~!s!~8t^N7b2Uud+v0GYiRH ztTOG~ziHjdP3umY9KA1A%`CLu?!+nGwT@5&W>_8yns1r+_RzeBBj?WfRaU2`KbK2? zC)TpzN;+sBh=GBjp27Ia@%L-i=YOv(G1H0tt(g9P>Fy7T#+UCyV&cH`b1limxq-JY z=*$neec{b5^)qKy#6!HYujHH6{F%x!dwyD2t+udQ{o}#ezb5{hxoq1qtpoS{kDtDk zwe8Gt&#<&#osWc5)s&p-Ot?daLNt!~N0+nN6S*!TAK zBq90Q1EqeRew#9!0!3T{i#E?MI8@(a)6*L!lKOFxt8A`r4le@(1L*vR`GHExhsxjG z*jR9o$?#d|>N<=1cR9&_j~s8AJ$v>djpFBLepd8-`my7N%ZK|C;eUXM(cj{sN{V{tA{=J!bd3D&|1sYwm zXGh1KV|n%G^RCjaMQb89KI*QY^zYUzt)13fd!;{p{PW?;ljFa?zx|yNJ%4$nWs&{O zTbEp-c|e7s@?T^3Xz$C9T)RbFKi=B4bn)KM-^;&j5$Qhq>GgW)H}y{8?$O^S``oRz zuYSq@;k$5s?Cx*&^5^-#fB(8MLPtLR^5u*7b`>0C>OOiXf}4S%fnWP?$oro{OY8qX zYW>``C}vm1!IF^F+F0M)>Nhm4nJ?|H`MD{+{%*nVunmhewwi{@pXA?P^z)Lt_TS@u za)BbMf9fRG8Za<0T1LD{y0bA z`jY*7x9;4%`R+v3(_USouADn%W1?eMYINbu2tZ|%>IuZ`{f%U9|esN$P?v`h5#bbaI4HxC;BT5rqWT(AE5_Oae@y?CR4E0^qe z@n+`bNtLRHb;H*FdYG8ArSRkehWhhoXV?AzyZ!6y`gzvreTy`fS)Z^d*tUDK?Vq|E z@Av;-cFlU0eg3_Dd#m5@_}<%||9)r#tuUTK9e#!P$5Aoqc`mYj%0weXELu{UY2Ta;`f| zpZEUny{|us)~ol)?-sB6e(r6wJD>cd@Hcm&bYeCiUI?DYp@jKI>zfY>4*Poji92%In>rl72 zu2t2O4-WC?dtYBq;pLaLdGP-E>)OY^)cE<|OJC3Zd+F-x`YjPUep8!R85kNeC;j7o zIMZ&U<>V($6>69MpY-_ur}Fc@_+2HR<|}_PU-;$zK2e?Rl7<%pg`cgKv8r$goN~YZ zzwdOz`#0}ZeL0cXeKbjZ@;%3w_56FK7io00x9?tO^s;-?r1#TwHb&_9rq$jHYI1w~ zVcohl0U}R7E$u$0I$J7Et83HI%a^Zlt%=x}1WN4h^SjoZDRB*47q@fG>6w|CSwAw* zO1TEk6BoVp>p(O6H|rVqHkZAvuZ!4eq-`Agy(-6NO3$lps(*Kvzn{b|8?G1ss-)h+ z)H`rWtabT?e@qMvH9VL6zs}S5{#CupO2qZ!ojsYymc&<0?4Bp;^P`dTW8t^p18@6T z3S54z*4EY$JN@bDX`kYopNr;cbQL}NVfc8y-#m+T8eV@-M}3_tAGU6eeg3@O=;_T} zi$cP~B>qpCJ5`gJ*=O?;U;DKi9<0nv-_L#Ne*L{$chVp4JAL?YY@osQr0y!FdM>2J`s z6&oI`T+3P)wfUIEPltH_>vt@R>*BWiO%GkKaq99OnaAx@ri*EJ75%#6`FOsKdH$vd zopaNy=31xMpHt)SKk2<+_Fc=JFp;BQ?)fbF|7YiBzuE-9vT2Jn1Rs9StOvDg>z33n zTe^Sq-q1i1{q<{&)&BCGlfHWYw(jMYoqO#1JpSiPoA27W(|1Pv5^rZOZ(lRN6QSY3 zsjoL4aER~!Engp@Gp%o%*xT+<(WhODV)hi&9lC!hB7XYZsr8a|_HRBd?Y7>QA1spk z^_BecuwT`?t-HJD+4l7At9yIC_V+iv_9ZD{#)>Cxroeyd)Ze5y$N{w_9H9SUNKP`*yLaraXQ3(WJ;7360mU=~~^Z?<(@z^s@XV+na4$ zO(J!~teK-zcg1%f-IV-$+l&`0rY&Rp>c2YduYu~N_|QN-+h3=r>;L}zYU-jxHD9MM zQ?s8J^>X?}?uq-LC)`5bmL^qe4&@|TVJt9 zFV4>u{B95yIAz5Nj%en3m2YqFCjUD2Vg-BGA{D!?>sEW$K4iK6Z;zH~>y~x)TQBLC z%Zha$-BR#xiue8}M!v5_(x9tU%rrIiHqF=jkefQq|{QPWf>~Hz#`um$IE-nJ) z`p`>P_I;UeTO1WQg|qnGQoZyXpD8cnm&g3tZGAg6ixrj?{xe*%zi@qX`u9BRf7fr{ zm6R8^{(MP)>I46I7J1o>zf=FI_Szk|fBu}2Wai3mtD9bBy^Hf#sf<#mm?ar0dZ(P@BX07^G`t|E)=Vzz8|61A?P?@>$?|r4I-8sG`58l5v z-U_y`=BH8j(MNAM5*Q#=!%D|fS7&P#6({eVa?a%I{>-WW=B?v9X~F;DyK!IN*}6$P z3l1_xn`<%G+HSo%wQJFe$>&8mpZ zPQS-|a)o6@!vFRA^9=k>EKU8lr;=M-$H30NgJZvb^{Kuu&!0cNwNm-Z_57XkX=@x! zE?ob-X`BmOU|{fB{lz+Z@A0~Ya!dYSp75`6-@Hwel2!_V%E5JU zJLmkdFjTX8b>*aR&_TEGvb41NCGoq%w8PfysMWTx*8W@>m{@Vcw$j9~{@$KBZ*;8l zr*~P!#YGE0dTeBTNiTlajn6&b2b~&fy!A)%&7##LUgjE6*5hy>$Ohgng*-LC|4lm-@f#_NdPOys(-5iq%x1 z?CbxIAH4NSto!Icm3UuX{kc=?UgmxO`f*zQtyx)T<{Cdg@-cbWrti#Y&Fwg> zCaN7KB5rG}Cn+onipi&cBX)nYk9wV(pBpBUdj8$rZ~H@*ZSCqbt7i#}4pud-RFhf# z;Bl?9?qbdSpSh2ZtvU0hao@b!-``#>V>5o|rTKh)@B3*w7klmX^mXrjIIX`cRWHus z{>6J*_2)e|ZT4|=dHS>Zn_D}bt!GIxFfdH0Tk^j-@c$+=YwgVn_U{*a?a#|w zbN<{ZA3v{}$mq8}cK@o{ecHQwv(aT^<4bQsj)Vt)E8etul92pf4eg&2b=BqRzc)Ai zY5B1uo%QFkr~ltxzIg4EiN3nBuBra>&bhr|(ZN$^PMkKUe#(tI5%$d1h41EA7C%3e znVYvn5z_dn;|u;_GjW&0{{R1G|JBiCU|^UL_Okz^mZrw~(m6BM2!Z+-1x%6#8|wa^ z*Snq!Y7}^S*_}kL z{wBG(=I5rXtLsy&8F()~_w_8CID7W&qe+!v6V6|2n5n30d2$h_YoLhh$+LAy|6|+v znj_mvca>L`Jq3QfMxjVy0Qt`7fSq5WgoTGnm( zpLczG9%?q_^z-VPm^FWyf7E|jIXV6cTg|NL%GbV{=s!RG^Xl*KZ=?7AI{xff)j5UB z$L&^!|CbP!P0en6FuO7P`oHw7{U&yL*92d_fBn|3>dA&h8nbO|s&-r7j07JIru_G^ z#$QLqe{pfqp(3s`t<(FyO+DiNF~@3prG)fajjp3fnOPN?yAIs3EdKW9o^5OW{fZ9< z{=HG38Sm#jW!j`QwlR0_+!1lTxbIQz<6qN@_iWu}vUBIovvZA??|5-jd}@T!-%|_A zo$cmr_42LTQ-6P7|C5vbi!>Y?8Mld9)V^A>NJHM`S8H+ld5x}5&#!977=e1aFWrBo z>+MZ{H^=f_{hx!|W<|XW7kT<(qO!5_-*5Hn-_5Ue-je)#o96ZD{v1Dlp7iXDzp|e1 z!}nm3)T^uHm+jeIW%T3suLvEnCHE(`{;uAAef|H)z$yB#K8jrG|MK{nhyA7hl3x3t zKlANcG-bM&|MoB6zm_QejbHQSxNT3UNb3E2w($w4zr9{Bop+xrOl0Y{Wv`SYS8Gq# zSNzN8_1~dB-rqO072F_T^t1yRmbh+ftZc5|+`3xZ*tcuX{@r`muQuPkIy=4k^%qZv z^y=*PyXUvx|9jy|#QPJst#3u`vcA2%TK?--P?zt!<(^jSThY6%ZY}c%HKR)1J>09a z%fpYic?c8|p=C+F;|LXnOlGb}Psqmps z;kKh?DZ+cp_m!7!*>1M`PQz{ciRgXJ_a@s8oO|#RPywW*qC$_ z)MLvm_U`IFH_vjdUjD`iNPqB4i*D0z`T8^S&He9ft@*i0xt)KiP5rYeEFq!$etf;o zyFd3%#-2rAN=onSsPm0o-CEBr2J(Yg?92_@rY(bZUqw55I6!Tsr?F?|o9kT z{=T!>51Uvw-T3Z3UCy@XhDo)xk#rrEc6&TgFWSLO3^)9iWTqFM24H1vOGo}G0{ zJe9fDcIQq1y1%8(yX;O+*WY~E$jtnjylv5s-KySKTJ^!@|E~J1tNfFv|GThTk)8id zePG`vrX#$q$xjMZ10u6njg6_>F8DM>FRqrs_yU5JH1>* z-FN2~adF$vANMWP@G1*i_V`kLd|1$)RwB;-YPB?$rM+ zJ^bpb{i%nmtZ#uj`PYwEFIc~Pg~9*jrrDF^)nBc9B(6W_`}eOGYm0vT-7x>!n#_vG z*S8GU+ir6ejG8T7yC;9e`%sam?NhZ^Yn@WB-)F7&cd}(eY{u)Zd7^)|6)qMr-dG=@ zW4|V5AV$D-~`UH^Ok>}x5h%WfB)oquf&=YILLU&|Tl_rIU6 z7g~Pjk!$z1{LiO+{5O9t)%E3F?l&)DU(L)tN6(%;`?ufz)90Kx+x)vcL6aY7$4`;9 zEpoB#7IoctRWEjDjc1^UChyLqqg_u=ProVkx_(pgZ?oU!4f}KNR6PB(^yHiGD8mWU zrkc;|v|k&UY!koB`u5@X?SKFM&d<6#`{(CpZ*T8De(u7P+TY(+i85{4Y-C81%gNXHR#XzI6ZErJinI7Qqto-%Cpu+2!Ts{r>ircc*O4w=k6oKueOQ10iS2LhZ`ao_P&jb^{ORn~ zCJ_hCnPsQ^oAhYW&f;egI%1DQm#kjw>vQpRcJ`CzjuY&HMlPXV&9b&dKVD2cY?ZmL zK615&mrqGZd3gJ8`T7%~Z@;XZ+{joryZeQfubyyr9|bk>e|~;8*SgwGuVrDm^Rx4_w-+32Do#J& zQNM=e$M4MhQ>V|?y$a8gW^riV`o)mY>Qm>eDFK*_Q#GJo74SH ze~OEXPE~(pvvuv#%;$Zwo8IfiS;$KY$~}0mZVeh*)Ia6@_K)7zf0wggPt%2|{*Q9&gd#j&+)4dr}FV^i^zOXhjdT;*yILB{a`L)AWtzXe` z=IYgulaUE;I6_2Rue<;F{eJ)1xyHwzCdYMjc7=#6eVCe?Te?(6+J1d>`Nu;)4=~sp zI?X+}yI`NS>fd#;2i9#Zy%@;*|Vj=k8y3Kj*tM7&N@n`S^Irc}v;*@2&LW zEbJF1Kdpb7rrjm<-QZf7`o={X$D)Gv-koc|K3e^s)PwipvR@yBeK@<=z3)U@)ZSn2 zm!BtlcJ@Cx{_f63cKG@jv)D%Ec7ENsEg1{etJ~_j+Fo8C|NHX& z^X32d)kfRc`rcQSwaUNz;%|+ptERT$$;H1vzY=u~eA83dUtc4zP@^kP*?RYV=REe+ z>2q@AAI}7hbKSi>rXY=`my=&S(o}Jwm)z7xP%L)$; z{djqnDJb^5;|-@aH2tyZKAN=Jx+Yg#EZ+#v7e^c4NJ(XhJ^{(F=^|Mzm z{cNOX=61bYcgCc$=_AG#q}Z*X6fF_QjT8=8X0r% zh$+k!ReS&Xt=XyhflQl>F6)Y&{!{r`>(uF-nX6ac{kJD??h=EWS$CJDAFVso`6ugT ziOJcl6KCs`_9or>b}{v3IB4)=<44^h{>883rgE>!oS&Uv{`?Rt_cE_vpNsxwoqD>n z_uHfGRbTt-cga1Pw~jCR`jP_-_Lr-ah^N|x-}ajbU?$_zMiK}S0<@<9~OK$ zebtRyOXlj%n`gZ(|99TWNx|y=FZ>=_D{haqd$#qGzSP?j6FBR|&y|ZWxqlPXtnxcH zb=mTzGrmoIk#|~s=l!RFSJ&^)+pxbdW^!HSp|t;wGuN$*+*dR6Xp-UG_*`9I(8NgH z%b?(w_2I8xZD>}WzNCJ6T(QCb4Mk7?RDSjmpH{hGmA1CeqzjvjQWF|prWI!G->vZX z?b@^3>eerrGgIxt>X&X4>jfWPHkojJ<>^OLJoc|yHMi3jv=J+PQAS(OhQd`sckWmg zm)LHyjg`F={Nl=wgu7j;s&U&inK<<7o;#royh@8($U64Tc>a6jy+duEo8{L{+3dnp?u=IH)R z*mXa4LY=k8^S+e@-CyS0mtS+7Jg?`=?f{l+rZ4j|vjRk(9{O1vVFWs1+2iH(I5 z@ArN!y;&bQ^Wpcydhxq7rpL`q^2$5b`}%rJoZ-$tH_rc@e9&Q8Y|^DIGq=6Dw9C?B zdRNT6w_mJJ8GF4wdNuXsc2mW5F$=efX;2Bu-T(hz{q6Rtb(ZtC@}KRw^#As; z-n_iLGP}zi-X#R$tz*)?LY{D!P1sU}#|8>iH*H|Jr%J zeE;^Hj$YL_1G8Vhw%UJxds{nmX6DM1%P#G&xTxfwH$hGF?>b+@XS2TWfBAaCqe@5e zrTZ`YC11QvO)mFcf{y0)OD%n!`u$z(F*ZY+H}lr=D7lCE{IXGD48L7}IQI!??DG8V z<&%G(`*y9BTWm(vl3TkhE1Z>_XT1qAsfr6(F+0BC)YAA}>(0-!Tzh)*M&qEj&EEBH zQLoA?hFe_cNA6=c%aES%JHp5NJ?}~fufCk?`SS4O#zWhjxFl-}Uh3;rEwi24 zb4ma9@qhe*B1gA0^(tS|SMQkhyk1O1B4K01ud3ZoWv26Jy!>}Pt}507R6MXcEPGiq z-|%Jmp0&YCkIyhv>im7oXY?M8ktA-Z?v%b!IKV5Hc!M~WeylpRK zJ8V90{Op`EU+TDO_ZREBqPMqqyN9Ly{WX8IiCO9;_C`+(vO|2mLBE4Erx?Y3U(*J^0$)KmQRm3%YPpSJ?SqCXEVtzWR--R+on z-bYYb#jlZaWYu4JA(039uT1#7_LsczEZf)KzWezz-&cnPUMfv(oRRq5Nxk@tzuT|5 zR`=8E-G0r@dc9=2qfTV@cF)d!9kJ70qS`&hB0g#RPcO+~=YKO_?dA1(Q~&L=GinQU zvzKO9_h6iMfWiK^{gE4s-%t5cUcT*gj9*;z_7@e}r!-IY@!ZJG&b)N@zF!fjv<($~ zdTB9eF4um2oTk>9@b5)gpB|s|-fzNvtGl(1Ve0kzu*VA1_?7-OI9IzHoQ z($BBgd4nn)0!5Nli>^nRziip|^=%ec*S1GnC3dde?$i0jyQ*#Ot~&XEUrV3df9fsX zdn(EM*VT=Cg6b=tf4^Tp*{ITbTfVW{yYg+@>*f?soaMFu%W1FtX|rd~_WKpS_SeB{ z9xm+b-!0o3(|bHUCa34hy1?VTGFBA<^B7JjTv>HWe6r=U*lBg?=f6u%s7t@StMU73 zCEfUaXAU2ZJ(72{OY|16wd(I!z9pQSueF=#OucOVIm(^UL?| zW&RO6Pkd=Vv*(NV_eGm0fd&%ok6zO6|6ejWT{mvai`}Z;IafaznRT4){aW@cVxvCe zt}4DyQ@$-X&Gs>tvbDLRE9U*AzPUqtx_)KuT~I$z{=M`!?|O@?yG}A!m1-=R`1$#{ zS9&U+rZ|Tm@Vjp37xXK&GP&+3`}De-+qS)Wbz@T9$*@l!_Z1pz6kIJ~ z*Y-FSnVg$%{yus3p}Qf!u5RpUW%U==i&!wZZsj`V$(t;@&z!JM%-e4D&Q)u|is$uP zpFA};-E(K(S#R|PdNQ9UPpn&h4ibu1Uu*7ctc`xs+|kVbt-4~ze5*<&HLXiwT~|`R z?Ot=Z#aPl?Y|h$hr_A}XQ|i9z2KC16j$d-&$=(aQFKhk%^yJ#L3%9ps|4-f+;gcTm z`t7@t;^N5<_t);d`}z6VXi%dxN;LiZ?)tod<1OxMa`d9puTAmz?+|~!+G9?H&%%k9mdEGLya(edq!ZLhEYD|z+Y`s%LGeHxRee39E6Ww>eQojZ57$X>cs z=H60&-~4aZ&H}%nU)HyxmmWWH%_B8>s?YN1UzdX>z4dUYi(9wyOa1nglfS;&Tkm6c zT|75PELQ&K(r$64KYx2%U6(okvc47d?A*-Fb$`#_*N&gS$~|LYwT|OQtI{VC!7tSWX%*~0ZOvd%S|}rvBNwH!lQBo$hQ`J}MpOwQADbn`)jNH zQ_fB6j930kU7NG+$??u((Spf4FHL&1sFhpngv35iul-dsZ`N-uZa=s8Q_<$9+IAgZ zPWM>43BP@pGo5?h$}guAf{%B<_*zox!L`-!uuET8b@_XXNui78o-F#cB);}Xa#V?j zRV`@VE$YL^xEHa}TMx7Us;c|{*L-fv&A{II*VkV5{rmauB-Kxx$D~8j`+s`!Jt_TA zGk@m1I`Lapl~%7#++hl?-*i7U;&jW&3q^e|maN*kGcYaQ%&R`uck1lfw|8z%_emGd z&RR3yK7XE}Y)sYq`nc`qN=kA*JwCGN(4UhY`>(WYxGb;pcCA&!QIo~b9yI>l|8Lhp z3&ray-*>OGK78&9SAPBJzXq3AWrMnS9{;C!?6-OHGw-BOY+p=e=0>0XjOFz!=4M~g zZ)Lo4a+0j$CKK8JfkhG?KDp_<3V-8UzIbb=ZH!p=x6;&DS=V0w`?s|To=ePpB_>Ed zo~|GN&A@EeszrY?nnL*=_5PZH-2)Bi{9RHpI=+2V%GH8wZ<9& z_cHeQ-I&-#nQfUptTDr0=N0K!`trjYipgUmyp)|dZ<2X^RwSey?d)wEHw=^3>=OoZQQYQ zXJ&kTp!Qb(V>46s-PWBqZ>D5ssOZy|nVRA2W2QZqHoA3C}=6QE{y85aTZY_=s3(}eY^YwaZr9Z;=glEWU*#ml8N?luj7G3$fC-3gdVD+oa76u3OmHyPFxy>^Cm~8Yr_S5$}ckWody{GQ| z>&P9;;&*rV22Yq@A0F|+eNd=UQ4-U`aM54v-sbgn;(8BR$BUJ zt+1@&g1lZlX#5Kb-l_Us^F)svb9sAjuXpwCOIPYY1hu)%u}7WK z^bXeHH&ECAo5eKmXwt{;pMCwkJ^j4))Vy4j!xC+NY4XInug|M1bA3DdPoMGFUGwtM zt*!qz8vkDCvFD`)@8@*QM#fcNX6Gq6{F?Yr&RVu*-fZ)$Vc}lov!p&hKWjW!Fidv- zs%a9F*`99im9Bp}^T58^>Rexut5-f0{ohx6%luU7yK83^9xqP$ZvSt?*M+>#%$_*O zG;7Dsoo{dMjn=wxX1@9P86g3ofqJ*EU90<(cTyJ1EmCq_wPj=3+j_M`=$r8Es=j&zD6o4{P^WPbKa=W(_KI&H7$aT2c;1rCUt* ztT}tiXZpK#%^c-d@z<8A*`GV*lVAEEykyH(5iuK3vO9gYtc=Oy_{-NXwe)q*o$)Z9 zTl~-Y;-xDSrhisZv^%$@s`KKH{n49TiuP9Rw%&dJ?eS;Fel0pwqp6mxzVdr&ZfR6j zQB>BZ=9dfWC$X3&GQB%<`PQW=ljlyI^5cbTWas08*>Ugk4 zHMnY*)hVy8$wKm}smrYGKF+l1*3hY#HF4Uk`O~wPpAOr8v5Twze%_XInb{xhCjHG@ zeYSqq^vM&a&6@uCh~K@~T;I?%x2U3^MVpfq=j=5J*{9*{=XJ)zdu{QK+>*bqk*DA5 z=U&O$T+E+Yud-$CrczKle!j7h)5UWSj3w7vB>HCmXz(as^SAr{BiC*(hc&v78g2dgogw(>{P6WRJT=1EcSYz- z)6_Sb{l_Bk((^Yx35-7~CU7yX4*&n6BB?)b$A-A;N+|q9l z%jB_+Qupk#y4BS^Z)IrA zrOQD#0_2TTRgWg=);BWNeJwS8l|1LwsjdYF7$l#)coV|IVC?2z{klt3J0&95vv8tF z>zns)*VRW#OABu;dt1N6Z_3Lh?7>c+g%@va{l9YVza_a1Cj}%Plt21mDDLLv;?@$a zGfh5hoyufh(6v-0j~*v2T{TN2`ogt1i;@ouf~RhN=o}a_V}I@J>AUJ5Z*f(>@=B6H zUiWP8SM@&m;Qr{hjDPMReO-^!cK2pU{4d=-Dq&D|EX zWX9mY`^21*#Dl@PC!KzTRQU+YAHC1HQ})4oalyL#2fKn8E7va{y$E)b$NzMVzqNbsg4dFzPHuP4FIQ(50GXxm zcYeCx|DBuDMO=S=ekIDM01|ZgW$*v;{rk6Z`~Ri82F`o-w15Y+@`K^h|H`oUD_5@C z5TU~@uA^`gyo+JNzw_Hto}XRd;94Ij^yslg56A=t(D6z8!Bb{M5>UN2{mwnzSvh%; zM(@{B8BdU^hA;K=F3Ahay0(GW<174~zxm5_5pm6~BJCe)?m{3X3V-J>|FYf0RHLit z;UCLB6_6O%dGaq_2a2R#KPL+}>RkP${mH-0kkm|HHTU_sc@I56mozgh`Tu#!zfF^p zTm$piSc_Dkj;i#kcdD7QNaJJSMz}%qF73~L&gUAKmA%Sh639Y^m;ZSn3nr)V?*DTr zkp(2^@&CEz--n6cMO-_(dL9@sf!6;sEctId<=?Wl>BY~_%(PDT3wM`p7X&F*_&a~$ zm+IWRi!{8lJ|*`lg2Wtt**m}F=i&(vd3xkyvWx>rtl>+2+ok%yx8`>(S`+tIxziRQ z`0^2}YoJ+WMZzDb*t|>f;C!-i-#k4&S#bP2{Mz4fawkY0wB`tWk`-vA2kckS>Itw6 z_^d8GM|DAW5g^oK2!P`qw($nKa))6;T|Hzg0~Qj} zynJ^4?Ah3|AK%n9|7NAvCnhT11E=x?lYfT}9XeV5xjq53Iam0Dg6F%~RjXH7-HMXD z&JD6O-s11xyRx}!CtaO9d$#lkh0IUa{x&X+fBRk?avv#&llbKKkN-z3iU0KbJd1sg z->C^!^H>}O!1qsoJnB~F=T{PRZ03XZ$!8w_e*q1nW&BVEBECR&F+d}O0X0=jfb5-u zN@7V0*!05UAF3I&s0^eGX$u&L%K(-BQL+Sb>1vZghrjIv=w+-;u!~MXcd2qh_h=C* Z#@ke(|F8b0l(_Eir3^gN>vu681pw4Rr?db7 diff --git a/dev/snippets/assets/code_snippet.png b/dev/snippets/assets/code_snippet.png index 96bf7e86bfbbb0680a1a67203a02fa148ac67f47..cc3e125cc5ea7385e827d2e77360ee6f471e319b 100644 GIT binary patch delta 32191 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 Z#@ke(|F8b0l(_Eir3^gN>vu681pw4Rr?db7 delta 107215 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 P+h5urBe*8-n0^!hexAl5 diff --git a/dev/snippets/config/skeletons/application.html b/dev/snippets/config/skeletons/application.html deleted file mode 100644 index 56b648cc03..0000000000 --- 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 75f87824e4..56b648cc03 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 0000000000..75f87824e4 --- /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 19fd93ee5e..efbe8ca19f 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 e9f9d8adc6..fd5f8dd4e1 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 b21c795c36..946ac3da34 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 6aefbb8635..6db97d6a65 100644 --- a/dev/snippets/test/configuration_test.dart +++ b/dev/snippets/test/configuration_test.dart @@ -32,22 +32,22 @@ void main() { matches(RegExp(r'[/\\]flutter sdk[/\\]dev[/\\]snippets[/\\]config[/\\]templates'))); }); test('html skeleton file for sample is correct', () async { + expect( + config.getHtmlSkeletonFile(SnippetType.snippet).path, + matches(RegExp( + 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.sample).path, matches(RegExp( r'[/\\]flutter sdk[/\\]dev[/\\]snippets[/\\]config[/\\]skeletons[/\\]sample.html'))); }); - test('html skeleton file for app with no dartpad is correct', () async { - expect( - config.getHtmlSkeletonFile(SnippetType.application).path, - matches(RegExp( - r'[/\\]flutter sdk[/\\]dev[/\\]snippets[/\\]config[/\\]skeletons[/\\]application.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 3d93f024c1..18960c2640 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 229f031e24..9f6785528b 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 d2fa734426..3ecab46f48 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 91cbf97e2e..7541916a5c 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 9849eefa54..1213ebb812 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 4be58be11d..8b31868428 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 3d1712a239..30b81b0f28 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 0aa5dbc771..063cc0087c 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 fe2f3fa46d..44cf7ad20d 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 b790a39c4d..4a0409a33d 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 633715a5ef..3395d248ad 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 fa72139173..04c276b0f0 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 a8bb502bf8..e1327a9b9f 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 78f68c637e..d923851df3 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 25ccb04802..ff3982e196 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 96c9b75121..5b9e0d6874 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 805f4a12f6..9969535c4c 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 35b4331cfd..b57bfac68e 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 9c8a2707a8..daa9ed62a3 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 f6af1afa39..1a2243864c 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 5c9cd802ad..82b4b4c41f 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 387be8f9b2..d0ffc93633 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 44fc5397f8..3fd501ea57 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 97366e44cb..cf2d66656d 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 1f7d105862..dff4a67a07 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 72b8f259fc..e76c45fe18 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 bb53bac8d6..249a312831 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 2b6856765e..d6bfd58f6d 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 8cdc948aeb..0ecb4955b8 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 9cb8be9e03..785db00eb1 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 e2b76f796f..d1e21c471e 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 cce2ee213d..16206ff9d7 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 27ece6b7ba..7fa1217a8d 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 5fe9b600c4..7d5cb992b9 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 bd141a2737..d23ebc2dc4 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 b224aa121c..8451aeb294 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 ca22129ccf..8a17d2db7e 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 d5ecf21644..077c0a72ac 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 be829a79bd..3879e29436 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 ff292d8a9a..046feed189 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 9b23a687f1..293d3a7bb9 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 8236c6e263..c9e794e349 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 c1891a627a..61f74e9766 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 40b5d2b86b..2c580d4a0e 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 9ac1ed9977..a53890bf9e 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 1a9e40ae49..e128992095 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 fc7a4e88c2..6b3ce2fa69 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 a943d44c51..b857c6be46 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 57c58609f7..cf4d6412db 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 4fb38dbbac..551e6c1e5d 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 e868c6a69e..f9627d41be 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 80eadc38d6..13bb1e6a41 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 ec29930ce4..9bc53c5e2d 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 a04a8ebc32..1b61e3925f 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 5dfb5215e1..64845d0737 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 c096321c0a..cfc01247ef 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 24dc533a42..2e2f4debd9 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 cc4589e336..58113ec73d 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 663644eb32..2944b1adc0 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 e1b86781f3..48ca12dcbb 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 b234ce85d3..9ddf0ae220 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 44253c554c..0549207d29 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 17ec4a85db..d1f158180f 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 a933dc4347..6f7e3dcd53 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 db9875ea70..8e9013d3a2 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 7be5dc3a15..9f8215bd06 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 c1f6823015..23ec1b4194 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 45e14d4b67..36643f9e41 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 d4ea4bc058..1c9c411a29 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 afa92bf432..13a4e89f78 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 e151810bc7..087a183ccc 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 011895beb8..c7e7243182 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 d6ddd70303..24ab9c9931 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 51ac275737..1719ccd09f 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 f5517c89a8..79341b09c9 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 d2de9dfbc0..30b425b642 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 95ec70f3f4..afbd20c5bf 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 fa83839fa3..05035e8e64 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 8b85deaf9b..20ba150551 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 63504c863e..ac331a3038 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 3ff92e05f7..db5c2815cd 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 eb9c85704a..a16e3eba3c 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 cf0f137fa2..1c51cc4236 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 8160a6afdc..90cd399954 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 06cfd2e05f..5e0fcac3dd 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 fa163dc444..eb085bb1a3 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 d4ea24918a..5bd5e3f097 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 3e9bc2cd4a..19dd904442 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 2f356b06bb..4f3bdf2f21 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 ee0efc76a4..2d1babbb21 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 82b7f6d0c5..47d6fd18c6 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 3262ee09a1..779beae375 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 e3cc975a91..4ba6dd5b1a 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 8ec25e1304..c013347865 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 3476119123..c9fa78f07f 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 3b834c6223..b17180e332 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 5831864fad..6447128af2 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 3c8e0b3897..f70d9d3b09 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 3a32f36eec..47e914199a 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 85b6bdebad..2cef6cd2d6 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 ded1ef867b..265850c773 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 4e073067a7..f23dd52672 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 6298411c47..1db9baf589 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 10d1c5037c..abb009fb86 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 7c29768f7c..71f4dbd124 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 8cd5ed9e56..71454b180b 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 eb236eb0ca..1d29dbc821 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 995cb3ea89..291e7ba0f8 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 2800c61815..472a092d70 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 73d4222c6a..5694ae8830 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 8188fb6293..2586a170e7 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 810dc0a656..5cbc0b23c7 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 2942c7c4fd..5ba3129b03 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 03a79372f6..e73787e5bb 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 9b71f4b99a..cea394b146 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 000a1ce1da..cf8eb5d3bc 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 9febee15d2..7fe883ac4a 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 0774e93565..b2a261faa1 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 ac170ac401..edc5d274c7 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 e74eddaa3b..cf5d3ee1f6 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 529856a449..f729dc3b96 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 28548eacbe..ac8adfeb1c 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 18ba06c750..b9041f7283 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 35c1b1f06e..6b3769e12d 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 8501af508e..631d9028f8 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 bb96c0f09c..402d820fd2 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 5eaf425ae7..7a9a4b2b3f 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 70fa5d9cf9..5fedaf5ed4 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 27d3c965af..be9c59b7e7 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 65ec084457..f6b8ad80ec 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 f97de8657b..ca2c3cec86 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 524a4298fd..cac6012278 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 d67597675c..c26cc15b93 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 08e9ced1f4..b82b5a3c7f 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 65a283ef8f..ad3407611e 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 529774ba83..ec459395df 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 afac83bdb8..56fbf49fbb 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));