<itemvalue="Instantiating non-const instances of this class in your app will mean the app cannot be built in release mode with icon tree-shaking (it need to be explicitly opted out at build time). See [staticIconProvider] for more context."/>
<itemvalue="A description of an icon fulfilled by a font glyph. See [Icons] for a number of predefined icons available for material design applications. In release builds, the Flutter tool will tree shake out of bundled fonts the code points (or instances of [IconData]) which are not referenced from Dart app code. See the [staticIconProvider] annotation for more details."/>
<itemvalue="When looking to easily toggle the default decorations, you can use [ScrollBehavior.copyWith] instead of creating your own [ScrollBehavior] class. The `scrollbar` and `overscrollIndicator` flags can turn these decorations off. {@endtemplate}"/>
<itemvalue="This class can be extended to further customize a [ScrollBehavior] for a subtree. For example, overriding [ScrollBehavior.getScrollPhysics] sets the default [ScrollPhysics] for [Scrollable]s that inherit this [ScrollConfiguration]. Overriding [ScrollBehavior.buildOverscrollIndicator] can be used to add or change the default [GlowingOverscrollIndicator] decoration, while [ScrollBehavior.buildScrollbar] can be changed to modify the default [Scrollbar]."/>
<itemvalue="Describes how [Scrollable] widgets should behave. {@template flutter.widgets.scrollBehavior} Used by [ScrollConfiguration] to configure the [Scrollable] widgets in a subtree."/>
@ -70,8 +72,6 @@
<itemvalue="- [asReload] (false by default) can be optionally passed to tell Riverpod to clear the state before refreshing it. This is only useful for asynchronous providers, as by default, [AsyncValue] keeps a reference on state during loading states. Using [asReload] will disable this behavior and count as a "hard refresh"."/>
<itemvalue="As opposed to [refresh], the rebuild is not immediate and is instead delayed by an undefined amount of time. Typically, the rebuild happens at the next tick of the event loop. But if a provider is not listened to, the rebuild may be delayed until the provider is listened to again."/>
<itemvalue="If you do not care about the return value of [refresh], use [invalidate] instead. Doing so has the benefit of: - making the invalidation logic more resilient by avoiding multiple refreshes at once. - possibly avoids recomputing a provider if it isn't needed immediately. This method is useful for features like "pull to refresh" or "retry on error", to restart a specific provider. {@endtemplate}"/>
<itemvalue="{@template riverpod.refresh} Forces a provider to re-evaluate its state immediately, and return the created value. Writing: ```dart final newValue = ref.refresh(provider); ``` is strictly identical to doing: ```dart ref.invalidate(provider); final newValue = ref.read(provider); ```"/>
<itemvalue="{@template riverpod.invalidate} Invalidates the state of the provider, destroying the state immediately and causing the provider to rebuild at some point in the future. As opposed to [refresh], the rebuild is not immediate and is instead delayed by an undefined amount of time. Typically, the rebuild happens at the next tick of the event loop. But if a provider is not listened to, the rebuild may be delayed until the provider is listened to again."/>