1
0
mirror of https://github.com/flutter/samples.git synced 2025-11-08 13:58:47 +00:00
Files
samples/provider_shopper
dependabot[bot] 36f933daf1 Bump go_router from 7.1.1 to 8.0.0 in /provider_shopper (#1876)
Bumps
[go_router](https://github.com/flutter/packages/tree/main/packages) from
7.1.1 to 8.0.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="010ba50128"><code>010ba50</code></a>
[go_router] Refactors imperative APIs and browser history (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/4134">#4134</a>)</li>
<li><a
href="e37dd83c91"><code>e37dd83</code></a>
[various] Add <code>http</code> 1.0 compatibility (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/4147">#4147</a>)</li>
<li><a
href="f1e628c07c"><code>f1e628c</code></a>
[go_router_builder] Accept required parameters not in path (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/4039">#4039</a>)</li>
<li><a
href="d83ab7fe4e"><code>d83ab7f</code></a>
[pigeon] Require analyzer 5.13.0, prepare for NamedType refactoring. (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/4127">#4127</a>)</li>
<li><a
href="a84b2c2ac3"><code>a84b2c2</code></a>
[ci] Exclude maps unit tests on Windows (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/4152">#4152</a>)</li>
<li><a
href="da72219048"><code>da72219</code></a>
remove unnecessary typed_data imports (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/4136">#4136</a>)</li>
<li><a
href="dba76d4e0e"><code>dba76d4</code></a>
[local_auth_android] Bump androidx.fragment to 1.5.7 and androidx.core
to 1.1...</li>
<li><a
href="3c3c980df1"><code>3c3c980</code></a>
[google_maps] Endorses package:google_maps_flutter_web. (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/4124">#4124</a>)</li>
<li><a
href="81e3428752"><code>81e3428</code></a>
[ci] Removes bespoke web scripts. (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/4129">#4129</a>)</li>
<li><a
href="9bf2dbcdfb"><code>9bf2dbc</code></a>
[webview_flutter]: fix typo (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/4070">#4070</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/flutter/packages/commits/go_router-v8.0.0/packages">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=go_router&package-manager=pub&previous-version=7.1.1&new-version=8.0.0)](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`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<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 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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-09 16:23:34 +10:00
..
2019-07-23 15:40:43 -07:00
2023-05-11 12:48:09 +10:00
2023-01-25 09:08:51 +10:00
2022-10-04 22:38:07 +10:00
2023-01-25 09:08:51 +10:00
2019-07-23 15:40:43 -07:00

provider_shopper

A Flutter sample app that shows a state management approach using the Provider package. This is the app discussed in the Simple app state management section of flutter.dev.

An animated gif of the app in action

Goals for this sample

  • Show simple use of Provider for providing an immutable value to a subtree
  • Illustrate a simple state management approach using the ChangeNotifier class
  • Show use of ProxyProvider for provided objects that depend on other provided objects

The important bits

lib/main.dart

Here the app sets up objects it needs to track state: a catalog and a shopping cart. It builds a MultiProvider to provide both objects at once to widgets further down the tree.

The CartModel instance is provided using a ChangeNotifierProxyProvider, which combines two types of functionality:

  1. It will automatically subscribe to changes in CartModel (if you only want this functionality simply use ChangeNotifierProvider).
  2. It takes the value of a previously provided object (in this case, CatalogModel, provided just above), and uses it to build the value of CartModel (if you only want this functionality, simply use ProxyProvider).

lib/models/*

This directory contains the model classes that are provided in main.dart. These classes represent the app state.

lib/screens/*

This directory contains widgets used to construct the two screens of the app: the catalog and the cart. These widgets have access to the current state of both the catalog and the cart via Provider.of.

Questions/issues

If you have a general question about Provider, the best places to go are:

If you run into an issue with the sample itself, please file an issue in the main Flutter repo.