build method
Describes the part of the user interface represented by this widget.
The framework calls this method when this widget is inserted into the tree in a given BuildContext and when the dependencies of this widget change (e.g., an InheritedWidget referenced by this widget changes). This method can potentially be called in every frame and should not have any side effects beyond building a widget.
The framework replaces the subtree below this widget with the widget returned by this method, either by updating the existing subtree or by removing the subtree and inflating a new subtree, depending on whether the widget returned by this method can update the root of the existing subtree, as determined by calling Widget.canUpdate.
Typically implementations return a newly created constellation of widgets that are configured with information from this widget's constructor and from the given BuildContext.
The given BuildContext contains information about the location in the tree at which this widget is being built. For example, the context provides the set of inherited widgets for this location in the tree. A given widget might be built with multiple different BuildContext arguments over time if the widget is moved around the tree or if the widget is inserted into the tree in multiple places at once.
The implementation of this method must only depend on:
- the fields of the widget, which themselves must not change over time, and
- any ambient state obtained from the
context
using BuildContext.dependOnInheritedWidgetOfExactType.
If a widget's build method is to depend on anything else, use a StatefulWidget instead.
See also:
- StatelessWidget, which contains the discussion on performance considerations.
Implementation
@override
widgets.Widget build(widgets.BuildContext context) => SvgPicture.string(
'''
<svg width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 4.25C2.48122 4.25 1.25 5.48122 1.25 7V17C1.25 18.5188 2.48122 19.75 4 19.75H20C21.5188 19.75 22.75 18.5188 22.75 17V7C22.75 5.48122 21.5188 4.25 20 4.25H4ZM19.0672 12.501C19.3445 12.1933 19.3198 11.7191 19.012 11.4418C18.7043 11.1646 18.23 11.1893 17.9528 11.497L17.9428 11.5081C17.6655 11.8159 17.6902 12.2901 17.998 12.5673C18.3057 12.8446 18.78 12.8199 19.0572 12.5121L19.0672 12.501ZM6.01201 11.4418C6.31975 11.7191 6.34446 12.1933 6.06721 12.501L6.05721 12.5121C5.77996 12.8199 5.30573 12.8446 4.99799 12.5673C4.69025 12.2901 4.66554 11.8159 4.94279 11.5081L4.95279 11.497C5.23004 11.1893 5.70427 11.1646 6.01201 11.4418ZM12 8.25C9.92889 8.25 8.25 9.92889 8.25 12C8.25 14.0711 9.92889 15.75 12 15.75C14.0711 15.75 15.75 14.0711 15.75 12C15.75 9.92889 14.0711 8.25 12 8.25Z" fill="currentColor"/>
</svg>
''',
colorFilter:
color != null ? widgets.ColorFilter.mode(color!, widgets.BlendMode.srcIn) : null,
width: width,
height: height,
);