Bumps [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) from 19.2.14 to 20.1.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/angular/angular/releases"><code>@angular/platform-browser-dynamic</code>'s releases</a>.</em></p> <blockquote> <h2>20.1.0</h2> <h3>common</h3> <table> <thead> <tr> <th>Commit</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="58aedc37d1"><img src="https://img.shields.io/badge/58aedc37d1-feat-blue" alt="feat - 58aedc37d1" /></a></td> <td>add support for a custom EnvironmentInjector to NgComponentOutlet directive (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/54764">#54764</a>)</td> </tr> <tr> <td><a href="ef10aa4005"><img src="https://img.shields.io/badge/ef10aa4005-feat-blue" alt="feat - ef10aa4005" /></a></td> <td>support decoding in NgOptimizedImage (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61905">#61905</a>)</td> </tr> </tbody> </table> <h3>compiler</h3> <table> <thead> <tr> <th>Commit</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="0dcf230d52"><img src="https://img.shields.io/badge/0dcf230d52-feat-blue" alt="feat - 0dcf230d52" /></a></td> <td>add support for new binary assignment operators (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62064">#62064</a>)</td> </tr> <tr> <td><a href="5a76826d26"><img src="https://img.shields.io/badge/5a76826d26-fix-green" alt="fix - 5a76826d26" /></a></td> <td>only report parser errors on invalid expression (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61793">#61793</a>)</td> </tr> <tr> <td><a href="089ad0ee15"><img src="https://img.shields.io/badge/089ad0ee15-fix-green" alt="fix - 089ad0ee15" /></a></td> <td>produce more accurate errors for interpolations (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62258">#62258</a>)</td> </tr> <tr> <td><a href="e9fcbb8af1"><img src="https://img.shields.io/badge/e9fcbb8af1-fix-green" alt="fix - e9fcbb8af1" /></a></td> <td>remove TypeScript from linker (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61618">#61618</a>)</td> </tr> </tbody> </table> <h3>compiler-cli</h3> <table> <thead> <tr> <th>Commit</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="e62fb359d6"><img src="https://img.shields.io/badge/e62fb359d6-feat-blue" alt="feat - e62fb359d6" /></a></td> <td>add experimental support for fast type declaration emission (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61334">#61334</a>)</td> </tr> <tr> <td><a href="0cf1001715"><img src="https://img.shields.io/badge/0cf1001715-feat-blue" alt="feat - 0cf1001715" /></a></td> <td>support host directives with direct external references in fast type declaration emission (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61469">#61469</a>)</td> </tr> <tr> <td><a href="b7ab5fa256"><img src="https://img.shields.io/badge/b7ab5fa256-fix-green" alt="fix - b7ab5fa256" /></a></td> <td>add signal checks to handle negated calls (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/59970">#59970</a>)</td> </tr> <tr> <td><a href="77fa204ad1"><img src="https://img.shields.io/badge/77fa204ad1-fix-green" alt="fix - 77fa204ad1" /></a></td> <td>rename flag for enabling fast type declaration emission (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61353">#61353</a>)</td> </tr> <tr> <td><a href="c439d6938d"><img src="https://img.shields.io/badge/c439d6938d-fix-green" alt="fix - c439d6938d" /></a></td> <td>symbol builder duplicating host directives (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61240">#61240</a>)</td> </tr> <tr> <td><a href="3e1baa5a95"><img src="https://img.shields.io/badge/3e1baa5a95-fix-green" alt="fix - 3e1baa5a95" /></a></td> <td>typo in NG2026 message (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61325">#61325</a>)</td> </tr> </tbody> </table> <h3>core</h3> <table> <thead> <tr> <th>Commit</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="8163a8995e"><img src="https://img.shields.io/badge/8163a8995e-feat-blue" alt="feat - 8163a8995e" /></a></td> <td>Add <code>destroyed</code> property on <code>DestroyRef</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61849">#61849</a>)</td> </tr> <tr> <td><a href="737b35b684"><img src="https://img.shields.io/badge/737b35b684-feat-blue" alt="feat - 737b35b684" /></a></td> <td>Add <code>destroyed</code> property to <code>EnvironmentInjector</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61951">#61951</a>)</td> </tr> <tr> <td><a href="2e0c98bd3f"><img src="https://img.shields.io/badge/2e0c98bd3f-feat-blue" alt="feat - 2e0c98bd3f" /></a></td> <td>support bindings in TestBed (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62040">#62040</a>)</td> </tr> <tr> <td><a href="4356e85456"><img src="https://img.shields.io/badge/4356e85456-fix-green" alt="fix - 4356e85456" /></a></td> <td>fakeAsync should not depend on module import order (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61375">#61375</a>)</td> </tr> <tr> <td><a href="8424b3bcd5"><img src="https://img.shields.io/badge/8424b3bcd5-fix-green" alt="fix - 8424b3bcd5" /></a></td> <td>Fixes template outlet hydration (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61989">#61989</a>)</td> </tr> <tr> <td><a href="583b9a7be5"><img src="https://img.shields.io/badge/583b9a7be5-fix-green" alt="fix - 583b9a7be5" /></a></td> <td>missing useExisting providers throwing for optional calls (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61137">#61137</a>)</td> </tr> <tr> <td><a href="8f65223bd8"><img src="https://img.shields.io/badge/8f65223bd8-fix-green" alt="fix - 8f65223bd8" /></a></td> <td>update min Node.js support to 20.19, 22.12, and 24.0 (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61499">#61499</a>)</td> </tr> <tr> <td><a href="b785256b9e"><img src="https://img.shields.io/badge/b785256b9e-perf-orange" alt="perf - b785256b9e" /></a></td> <td>avoid intermediate arrays in definition (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61445">#61445</a>)</td> </tr> <tr> <td><a href="56769de4d8"><img src="https://img.shields.io/badge/56769de4d8-perf-orange" alt="perf - 56769de4d8" /></a></td> <td>move property remapping for dom properties to compiler (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62421">#62421</a>)</td> </tr> </tbody> </table> <h3>forms</h3> <table> <thead> <tr> <th>Commit</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="610bebfce9"><img src="https://img.shields.io/badge/610bebfce9-fix-green" alt="fix - 610bebfce9" /></a></td> <td>Allow ControlState as reset arguments for <code>FormGroup</code>/<code>FormRecord</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/55860">#55860</a>)</td> </tr> <tr> <td><a href="4f0221e193"><img src="https://img.shields.io/badge/4f0221e193-fix-green" alt="fix - 4f0221e193" /></a></td> <td>improve select performance (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61949">#61949</a>)</td> </tr> </tbody> </table> <h3>http</h3> <table> <thead> <tr> <th>Commit</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="55fa38a1e5"><img src="https://img.shields.io/badge/55fa38a1e5-feat-blue" alt="feat - 55fa38a1e5" /></a></td> <td>add cache & priority support for fetch requests in httpResource (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62301">#62301</a>)</td> </tr> <tr> <td><a href="b6ef42843c"><img src="https://img.shields.io/badge/b6ef42843c-feat-blue" alt="feat - b6ef42843c" /></a></td> <td>add credentials support for fetch requests in httpResource (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62390">#62390</a>)</td> </tr> <tr> <td><a href="73269cf5ce"><img src="https://img.shields.io/badge/73269cf5ce-feat-blue" alt="feat - 73269cf5ce" /></a></td> <td>add keepalive support for fetch requests in httpResource (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61833">#61833</a>)</td> </tr> <tr> <td><a href="27b7ec0a62"><img src="https://img.shields.io/badge/27b7ec0a62-feat-blue" alt="feat - 27b7ec0a62" /></a></td> <td>add mode & redirect for fetch request in httpResource (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62337">#62337</a>)</td> </tr> <tr> <td><a href="f0965c7acd"><img src="https://img.shields.io/badge/f0965c7acd-feat-blue" alt="feat - f0965c7acd" /></a></td> <td>Add support for fetch credentials options in HttpClient (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62354">#62354</a>)</td> </tr> <tr> <td><a href="87322449a3"><img src="https://img.shields.io/badge/87322449a3-feat-blue" alt="feat - 87322449a3" /></a></td> <td>add support for fetch mode and redirect options in HttpClient (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62315">#62315</a>)</td> </tr> <tr> <td><a href="9791ab1b6f"><img src="https://img.shields.io/badge/9791ab1b6f-feat-blue" alt="feat - 9791ab1b6f" /></a></td> <td>Add support for fetch request cache and priority options (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61766">#61766</a>)</td> </tr> <tr> <td><a href="aa861c42ff"><img src="https://img.shields.io/badge/aa861c42ff-feat-blue" alt="feat - aa861c42ff" /></a></td> <td>add timeout option on httpResource. (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62326">#62326</a>)</td> </tr> </tbody> </table> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/angular/angular/blob/main/CHANGELOG.md"><code>@angular/platform-browser-dynamic</code>'s changelog</a>.</em></p> <blockquote> <h1>20.1.0 (2025-07-09)</h1> <h3>common</h3> <table> <thead> <tr> <th>Commit</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="58aedc37d1">58aedc37d1</a></td> <td>feat</td> <td>add support for a custom EnvironmentInjector to NgComponentOutlet directive (<a href="https://redirect.github.com/angular/angular/pull/54764">#54764</a>)</td> </tr> <tr> <td><a href="ef10aa4005">ef10aa4005</a></td> <td>feat</td> <td>support decoding in NgOptimizedImage (<a href="https://redirect.github.com/angular/angular/pull/61905">#61905</a>)</td> </tr> </tbody> </table> <h3>compiler</h3> <table> <thead> <tr> <th>Commit</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="0dcf230d52">0dcf230d52</a></td> <td>feat</td> <td>add support for new binary assignment operators (<a href="https://redirect.github.com/angular/angular/pull/62064">#62064</a>)</td> </tr> <tr> <td><a href="5a76826d26">5a76826d26</a></td> <td>fix</td> <td>only report parser errors on invalid expression (<a href="https://redirect.github.com/angular/angular/pull/61793">#61793</a>)</td> </tr> <tr> <td><a href="089ad0ee15">089ad0ee15</a></td> <td>fix</td> <td>produce more accurate errors for interpolations (<a href="https://redirect.github.com/angular/angular/pull/62258">#62258</a>)</td> </tr> <tr> <td><a href="e9fcbb8af1">e9fcbb8af1</a></td> <td>fix</td> <td>remove TypeScript from linker (<a href="https://redirect.github.com/angular/angular/pull/61618">#61618</a>)</td> </tr> </tbody> </table> <h3>compiler-cli</h3> <table> <thead> <tr> <th>Commit</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="e62fb359d6">e62fb359d6</a></td> <td>feat</td> <td>add experimental support for fast type declaration emission (<a href="https://redirect.github.com/angular/angular/pull/61334">#61334</a>)</td> </tr> <tr> <td><a href="0cf1001715">0cf1001715</a></td> <td>feat</td> <td>support host directives with direct external references in fast type declaration emission (<a href="https://redirect.github.com/angular/angular/pull/61469">#61469</a>)</td> </tr> <tr> <td><a href="b7ab5fa256">b7ab5fa256</a></td> <td>fix</td> <td>add signal checks to handle negated calls (<a href="https://redirect.github.com/angular/angular/pull/59970">#59970</a>)</td> </tr> <tr> <td><a href="77fa204ad1">77fa204ad1</a></td> <td>fix</td> <td>rename flag for enabling fast type declaration emission (<a href="https://redirect.github.com/angular/angular/pull/61353">#61353</a>)</td> </tr> <tr> <td><a href="c439d6938d">c439d6938d</a></td> <td>fix</td> <td>symbol builder duplicating host directives (<a href="https://redirect.github.com/angular/angular/pull/61240">#61240</a>)</td> </tr> <tr> <td><a href="3e1baa5a95">3e1baa5a95</a></td> <td>fix</td> <td>typo in NG2026 message (<a href="https://redirect.github.com/angular/angular/pull/61325">#61325</a>)</td> </tr> </tbody> </table> <h3>core</h3> <table> <thead> <tr> <th>Commit</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="8163a8995e">8163a8995e</a></td> <td>feat</td> <td>Add <code>destroyed</code> property on <code>DestroyRef</code> (<a href="https://redirect.github.com/angular/angular/pull/61849">#61849</a>)</td> </tr> <tr> <td><a href="737b35b684">737b35b684</a></td> <td>feat</td> <td>Add <code>destroyed</code> property to <code>EnvironmentInjector</code> (<a href="https://redirect.github.com/angular/angular/pull/61951">#61951</a>)</td> </tr> <tr> <td><a href="2e0c98bd3f">2e0c98bd3f</a></td> <td>feat</td> <td>support bindings in TestBed (<a href="https://redirect.github.com/angular/angular/pull/62040">#62040</a>)</td> </tr> <tr> <td><a href="4356e85456">4356e85456</a></td> <td>fix</td> <td>fakeAsync should not depend on module import order (<a href="https://redirect.github.com/angular/angular/pull/61375">#61375</a>)</td> </tr> <tr> <td><a href="8424b3bcd5">8424b3bcd5</a></td> <td>fix</td> <td>Fixes template outlet hydration (<a href="https://redirect.github.com/angular/angular/pull/61989">#61989</a>)</td> </tr> <tr> <td><a href="583b9a7be5">583b9a7be5</a></td> <td>fix</td> <td>missing useExisting providers throwing for optional calls (<a href="https://redirect.github.com/angular/angular/pull/61137">#61137</a>)</td> </tr> <tr> <td><a href="8f65223bd8">8f65223bd8</a></td> <td>fix</td> <td>update min Node.js support to 20.19, 22.12, and 24.0 (<a href="https://redirect.github.com/angular/angular/pull/61499">#61499</a>)</td> </tr> <tr> <td><a href="b785256b9e">b785256b9e</a></td> <td>perf</td> <td>avoid intermediate arrays in definition (<a href="https://redirect.github.com/angular/angular/pull/61445">#61445</a>)</td> </tr> <tr> <td><a href="56769de4d8">56769de4d8</a></td> <td>perf</td> <td>move property remapping for dom properties to compiler (<a href="https://redirect.github.com/angular/angular/pull/62421">#62421</a>)</td> </tr> </tbody> </table> <h3>forms</h3> <table> <thead> <tr> <th>Commit</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="610bebfce9">610bebfce9</a></td> <td>fix</td> <td>Allow ControlState as reset arguments for <code>FormGroup</code>/<code>FormRecord</code> (<a href="https://redirect.github.com/angular/angular/pull/55860">#55860</a>)</td> </tr> <tr> <td><a href="4f0221e193">4f0221e193</a></td> <td>fix</td> <td>improve select performance (<a href="https://redirect.github.com/angular/angular/pull/61949">#61949</a>)</td> </tr> </tbody> </table> <h3>http</h3> <table> <thead> <tr> <th>Commit</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="55fa38a1e5">55fa38a1e5</a></td> <td>feat</td> <td>add cache & priority support for fetch requests in httpResource (<a href="https://redirect.github.com/angular/angular/pull/62301">#62301</a>)</td> </tr> <tr> <td><a href="b6ef42843c">b6ef42843c</a></td> <td>feat</td> <td>add credentials support for fetch requests in httpResource (<a href="https://redirect.github.com/angular/angular/pull/62390">#62390</a>)</td> </tr> <tr> <td><a href="73269cf5ce">73269cf5ce</a></td> <td>feat</td> <td>add keepalive support for fetch requests in httpResource (<a href="https://redirect.github.com/angular/angular/pull/61833">#61833</a>)</td> </tr> <tr> <td><a href="27b7ec0a62">27b7ec0a62</a></td> <td>feat</td> <td>add mode & redirect for fetch request in httpResource (<a href="https://redirect.github.com/angular/angular/pull/62337">#62337</a>)</td> </tr> <tr> <td><a href="f0965c7acd">f0965c7acd</a></td> <td>feat</td> <td>Add support for fetch credentials options in HttpClient (<a href="https://redirect.github.com/angular/angular/pull/62354">#62354</a>)</td> </tr> <tr> <td><a href="87322449a3">87322449a3</a></td> <td>feat</td> <td>add support for fetch mode and redirect options in HttpClient (<a href="https://redirect.github.com/angular/angular/pull/62315">#62315</a>)</td> </tr> <tr> <td><a href="9791ab1b6f">9791ab1b6f</a></td> <td>feat</td> <td>Add support for fetch request cache and priority options (<a href="https://redirect.github.com/angular/angular/pull/61766">#61766</a>)</td> </tr> <tr> <td><a href="aa861c42ff">aa861c42ff</a></td> <td>feat</td> <td>add timeout option on httpResource. (<a href="https://redirect.github.com/angular/angular/pull/62326">#62326</a>)</td> </tr> </tbody> </table> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="b84859073b"><code>b848590</code></a> build: migrate to use web test runner rules (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62292">#62292</a>)</li> <li><a href="3a0cfd544d"><code>3a0cfd5</code></a> build: migrate to using new jasmine_test (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/62086">#62086</a>)</li> <li><a href="d081ef9b06"><code>d081ef9</code></a> build: replace all <code>ng_package</code> with new rule from <code>rules_angular</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61843">#61843</a>)</li> <li><a href="9d7768ccd6"><code>9d7768c</code></a> build: rework benchmarks and examples in <code>modules/</code> to new optimization rule ...</li> <li><a href="4c72ce408e"><code>4c72ce4</code></a> build: migrate platform-browser and platform-browser-dynamic package to use r...</li> <li><a href="dba912dd07"><code>dba912d</code></a> refactor(platform-browser): replace <code>platform-browser-dynamic</code> with `platfor...</li> <li><a href="8f65223bd8"><code>8f65223</code></a> fix(core): update min Node.js support to 20.19, 22.12, and 24.0 (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61499">#61499</a>)</li> <li><a href="3a106a35bc"><code>3a106a3</code></a> build: move private testing helpers outside <code>platform-browser/testing</code> (<a href="https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic/issues/61472">#61472</a>)</li> <li><a href="a4e2139620"><code>a4e2139</code></a> refactor(platform-browser): Deprecate the <code>platform-browser-dynamic</code> package ...</li> <li><a href="810b0a7e5c"><code>810b0a7</code></a> refactor: add explicit types for exports relying on inferred call return type...</li> <li>Additional commits viewable in <a href="https://github.com/angular/angular/commits/20.1.0/packages/platform-browser-dynamic">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Flutter samples
A collection of open source samples that illustrate best practices for Flutter.
Contributing
We're very appreciative of fixes and necessary improvements to the existing samples. But in most cases, we're not currently adding new samples to this repository while we rethink sample code in the post-LLM world.
Please read the contributor's guide if you have contributions.
Googler's, you can freely add samples to the flutter/demos repository.
Index
Quickstarts
asset_transformation- Demonstrates how to transform images' color scales and formats.background_isolate_channels- Demonstrates how to use long-lived isolates.code_sharing- Demonstrates how to share business logic between Flutter client and Dart server usingpackage:shelf)context_menus- This sample shows how to create and customize cross-platform context menus, such as the text selection toolbar on mobile or the right click menu on desktop.desktop_photo_search- Demonstrates desktop features in both Material and FluentUI design systems.dynamic_theme- A developer sample demonstrating how to call on-device Flutter APIs based on output from the Gemini API.form_app- A sample demonstrating different types of forms and best practices.game_template- (note: deprecated!) A starter game in Flutter with all the bells and whistles of a mobile (iOS & Android) game.gemini_tasks- A developer sample written in Flutter demonstrating how to interact with a to-do list in natural language using the Gemini API.google_maps- Demonstrates the Google Maps for Flutter plugin.infinite_list- A Flutter sample app that shows an implementation of the "infinite list" UX pattern.isolate_example- A sample application that demonstrate best practices when using isolates.navigation_and_routing- A sample that shows how to use go_router API to handle common navigation scenarios.place_tracker- A sample place tracking app that uses the google_maps_flutter plugin.platform_design- This sample project shows a Flutter app that maximizes application code reuse while adhering to different design patterns on Android and iOS.provider_counter- The starter Flutter application, but using package:provider to manage state.provider_shopper- A Flutter sample app that shows a state management approach using package:provider.simple_shader- A simple Flutter fragment shaders sample project.simplistic_calculator- A calculator to demonstrate a simple start for a desktop Flutter app.simplistic_editor- This sample text editor showcases the use of TextEditingDeltas and a DeltaTextInputClient to expand and contract styled ranges of text.testing_app- A sample app that shows different types of testing in Flutter.web_embedding- This directory contains examples of how to embed Flutter in web apps (without iframes).element_embedding_demo- Modifies the index.html of a flutter app so it is launched in a custom hostElement. This is the most basic embedding example.ng-flutter- A simple Angular app (and component) that replicates the above example, but in an Angular style.
Native platform samples
add-to-app- Collection of samples that demonstrate embedding Flutter a view into a native app.fullscreen— Embeds a full screen instance of Flutter into an existing iOS or Android app.prebuilt_module— Embeds a full screen instance of Flutter as a prebuilt library that can be loaded into an existing iOS or Android app.plugin— Embeds a full screen Flutter instance that is using plugins into an existing iOS or Android app.books— Mimics a real world use-case of embedding Flutter into an existing Android app and demonstrates using Pigeon to communicate between Flutter and the host application.multiple_flutters— Shows the usage of the Flutter Engine Group APIs to embed multiple instances of Flutter into an existing app with low memory cost.android_view— Shows how to integrate a Flutter add-to-app module at a view level for Android.
android_splash_screenios_app_clipplatform_channels- A sample app which demonstrates how to use MethodChannel, EventChannel, BasicMessageChannel and MessageCodec in Flutter.platform_view_swift- A Flutter sample app that combines a native iOS UIViewController with a full-screen Flutter view.
Demo galleries
animations- Showcases Flutter's animation featuresmaterial_3_demo- showcases Material 3 features in the Flutter Material library.
Demo apps
compass_app- A sample application that implements MVVM architecture.deeplink_store_example- A demo app that implements deep-linking with go_router.veggie_seasons- A demo application.
Flutter sample code
Samples are correct and concise code that developers can quickly understand and easily reuse with minimal side effects. Samples teach developers how to be successful using Flutter and Dart. They are maintained on an ongoing basis to reflect changing APIs and best practices.
Types of samples
There are two types of sample code in this repository:
- Quickstarts provide a starting point to extend. They answer the question, "What is the minimal amount of code needed to implement this feature?"
- Demo apps are meant to be built and ran. They demo the product, not how to write code.
A majority of samples in this repository are quickstarts.
Usage
Every sample in this repo is fully runnable. To run an example,
use flutter run inside that example's directory.
See the getting started guide to install the flutter tool.
Important
If you want to run an add-to-app sample, there are additional requirements. We suggest reading the add-to-app documentation.
Tip: minimize download size
As this repository is quite big, you can use svn to download a single example. For example:
svn co https://github.com/flutter/samples/trunk/provider_shopper
You can also use a partial clone to skip blob objects that aren't currently checked out, while including the full commit history:
git clone --filter=blob:none https://github.com/flutter/samples.git
Interested in contributing?
See the contributor's guide!
Questions or issues?
If you have a general question about one of these samples or how to adapt its techniques for one of your own apps, try one of these resources:
If you run into a bug in one of the samples, please file an issue in the
flutter/samples issue tracker.