diff --git a/.github/workflows/on-main.yml b/.github/workflows/on-main.yml index 6c1ede34..8ca7f3e8 100644 --- a/.github/workflows/on-main.yml +++ b/.github/workflows/on-main.yml @@ -24,6 +24,8 @@ jobs: - uses: subosito/flutter-action@v2 with: cache: true + channel: stable + flutter-version: 3.24.x # TODO UX-1347 - name: Setup flutter run: flutter pub get - name: Build example app diff --git a/.github/workflows/on-release.yml b/.github/workflows/on-release.yml index dc3d299c..d2a6d968 100644 --- a/.github/workflows/on-release.yml +++ b/.github/workflows/on-release.yml @@ -17,6 +17,8 @@ jobs: uses: subosito/flutter-action@v2 with: cache: true + channel: stable + flutter-version: 3.24.x # TODO UX-1347 - name: Install dependencies run: flutter pub get - name: Format code @@ -38,5 +40,4 @@ jobs: repo: 'zeta', workflow_id: 'deploy.yml', ref: 'main', - environment: 'stage', }) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 04b742f7..e6de48ee 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -19,6 +19,8 @@ jobs: - uses: subosito/flutter-action@v2 with: cache: true + channel: stable + flutter-version: 3.24.x # TODO UX-1347 - run: dart run build_runner build --delete-conflicting-outputs - uses: ZebraDevs/flutter-code-quality@main with: @@ -51,6 +53,8 @@ jobs: - uses: subosito/flutter-action@v2 with: cache: true + channel: stable + flutter-version: 3.24.x # TODO UX-1347 - name: Setup flutter run: flutter pub get - name: Build example app diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b4e9013b..461342f9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.16.0" + ".": "0.20.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 347e0d94..8fae9280 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,189 @@ # Changelog +## [0.20.1](https://github.com/ZebraDevs/zeta_flutter/compare/v0.20.0...v0.20.1) (2024-12-13) + + +### 🪲 Bug Fixes + +* Fab icon color ([#222](https://github.com/ZebraDevs/zeta_flutter/issues/222)) ([58b9222](https://github.com/ZebraDevs/zeta_flutter/commit/58b9222446e47d976761ffd347546717b043aa23)) + +## [0.20.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.19.0...v0.20.0) (2024-12-12) + + +### ✨ New Features + +* Created Range Selector ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +* **UX-881:** Range Selector ([#217](https://github.com/ZebraDevs/zeta_flutter/issues/217)) ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) + + +### 🪲 Bug Fixes + +* Fixed issue where avatar lower badge was not showing ([#218](https://github.com/ZebraDevs/zeta_flutter/issues/218)) ([a1742a3](https://github.com/ZebraDevs/zeta_flutter/commit/a1742a3cabb9aad03d2f79ee4bf832a54cec928f)) +* removed defaults to true on showValues ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +* removed large thumbs ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +* removed rounded from widgetbook ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +* Top app bar padding ([#215](https://github.com/ZebraDevs/zeta_flutter/issues/215)) ([7b374b7](https://github.com/ZebraDevs/zeta_flutter/commit/7b374b7e929c07d20220d9ab8e9ee09a12206442)) + + +### 📈 Documentation + +* widgetbook and example for range selector ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) + + +### ⛓️ Dependencies + +* **automated:** Update icons ([#219](https://github.com/ZebraDevs/zeta_flutter/issues/219)) ([1bd8bfa](https://github.com/ZebraDevs/zeta_flutter/commit/1bd8bfa0a8a6fda8782860779fa02e1d195f67ea)) +* **automated:** Update icons ([#221](https://github.com/ZebraDevs/zeta_flutter/issues/221)) ([10cc97c](https://github.com/ZebraDevs/zeta_flutter/commit/10cc97c225e6644099b10b8fefa537546d842408)) + + +### 🧪 Tests + +* adjusted golden tolerance ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +* created interaction tests ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +* testing range selector ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) +* wrote 1 test for range selector ([7257c40](https://github.com/ZebraDevs/zeta_flutter/commit/7257c409afaaf10b51a577856ab9623510d43e70)) + +## [0.19.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.18.0...v0.19.0) (2024-11-18) + + +### ✨ New Features + +* Added shrink items to navigation bar so the items can expand to fill the space and shrink ([5a785f0](https://github.com/ZebraDevs/zeta_flutter/commit/5a785f0cd35a827297ca2d8b96a7f96cf45215cc)) +* **UX-1096:** Added shrink items to navigation bar so the items can expand or shrink. To match web ([#210](https://github.com/ZebraDevs/zeta_flutter/issues/210)) ([5a785f0](https://github.com/ZebraDevs/zeta_flutter/commit/5a785f0cd35a827297ca2d8b96a7f96cf45215cc)) + + +### 🪲 Bug Fixes + +* add SafeArea to ZetaNavigationBar ([#211](https://github.com/ZebraDevs/zeta_flutter/issues/211)) ([aa7a1e4](https://github.com/ZebraDevs/zeta_flutter/commit/aa7a1e4eff10274f4fb11111a825e21a496522a6)) +* added shrink items to widgetbook ([5a785f0](https://github.com/ZebraDevs/zeta_flutter/commit/5a785f0cd35a827297ca2d8b96a7f96cf45215cc)) +* breadcrumb now removes the items after the one that is clicked ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* breadcrumb select index ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* Changed font size of medium indicator from 12 to 11 ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* Extra verbose semantic label ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* hover color on navigation item ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* indicator semantic labels ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* intruduced a value listenable builder to handle hover and pressed states on breadcrumb item ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* made NavigationItem visible for testing ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* navigation bar semantic labels ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* removed active icon prop ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* rounded now affects breadcrumb icons ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* set navigation item highlight shape to rectangle ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* The icon that was passed in now shows on breadcrumb ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* truncated only hides any breadcrumbs over the maxItemsShown number ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* typo ";abel" => "label" ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* **UX-1232:** Breadcrumb Issues ([#214](https://github.com/ZebraDevs/zeta_flutter/issues/214)) ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* **UX-1315:** Update license ([#208](https://github.com/ZebraDevs/zeta_flutter/issues/208)) ([bfbfa23](https://github.com/ZebraDevs/zeta_flutter/commit/bfbfa238f3356368d1f36d32d15ba8de4706646e)) +* **UX-1316:** Update macro desciption ([bfbfa23](https://github.com/ZebraDevs/zeta_flutter/commit/bfbfa238f3356368d1f36d32d15ba8de4706646e)) + + +### ⛓️ Dependencies + +* Update example app android dependencies ([#212](https://github.com/ZebraDevs/zeta_flutter/issues/212)) ([179c2cb](https://github.com/ZebraDevs/zeta_flutter/commit/179c2cba6ef0f65523d273d8dad2399f8292e220)) + + +### 🧪 Tests + +* added more tests for navigation bar ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* breadcrumb items are spaced equally ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* breadcrumb label and icon default colors ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) +* edited test to pass after merge ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* fixed debug fill props avatar ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* hardcoded offset ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* Navigation Bar ([#213](https://github.com/ZebraDevs/zeta_flutter/issues/213)) ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* navigation item calls onTap when an item is tapped off center ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* ran test counter ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* Uncommented text contrast tests ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* writing tests for navigation bar ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* wrote content and accessibility tests ([d97440b](https://github.com/ZebraDevs/zeta_flutter/commit/d97440b6acde461ed615b1ea827064b4b53af351)) + + +### 🧹 Miscellaneous Chores + +* **automated:** Lint commit and format ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) +* **automated:** Lint commit and format ([9f6ed48](https://github.com/ZebraDevs/zeta_flutter/commit/9f6ed48a91d5a0f681d7c3df43da49dc40852f1d)) + +## [0.18.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.17.0...v0.18.0) (2024-11-11) + + +### ✨ New Features + +* Added disabled variant to chip ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +* Added label prop to progress circle which overrides default percentage label ([e035a47](https://github.com/ZebraDevs/zeta_flutter/commit/e035a47178efd5b1528c86fc4f5c46bd7ad179f5)) +* added maxValue to progress circle ([e035a47](https://github.com/ZebraDevs/zeta_flutter/commit/e035a47178efd5b1528c86fc4f5c46bd7ad179f5)) +* Added mouse region to avatar for give click pointer ([37b0f8e](https://github.com/ZebraDevs/zeta_flutter/commit/37b0f8e284d0b734a1ca9b3e17fccbbca6c60fa5)) +* Added NavRail focus state ([39c5cdf](https://github.com/ZebraDevs/zeta_flutter/commit/39c5cdf4a150b6aae1c57cfc4a7daa1c70f09883)) +* Added NavRail hover state ([#204](https://github.com/ZebraDevs/zeta_flutter/issues/204)) ([39c5cdf](https://github.com/ZebraDevs/zeta_flutter/commit/39c5cdf4a150b6aae1c57cfc4a7daa1c70f09883)) +* added onTap to widgetbook ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +* Added onTaps to chips in example app ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +* added rounded to widgetbook ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +* created status chip ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +* implemented status chip widgetbook use case ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +* **UX-1233:** Added disabled variant to chip ([#203](https://github.com/ZebraDevs/zeta_flutter/issues/203)) ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +* **UX-1234:** Status Chip ([#201](https://github.com/ZebraDevs/zeta_flutter/issues/201)) ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +* **UX-1247:** extend ZetaProgressCircle ([#199](https://github.com/ZebraDevs/zeta_flutter/issues/199)) ([e035a47](https://github.com/ZebraDevs/zeta_flutter/commit/e035a47178efd5b1528c86fc4f5c46bd7ad179f5)) +* **UX-1310:** Added more customization options to ZetaListItem ([#205](https://github.com/ZebraDevs/zeta_flutter/issues/205)) ([6e13502](https://github.com/ZebraDevs/zeta_flutter/commit/6e135020cbddcf7e448abdfadd7eaca127acff56)) + + +### 🪲 Bug Fixes + +* Banner title alignment when centered ([044ed2e](https://github.com/ZebraDevs/zeta_flutter/commit/044ed2ea47ae9e82ce7433ff251582a2fc861271)) +* changed _updateControllerState to _handleDisabledState ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +* converted child widget function to a stateless widget class in status chip ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +* Removed hit test behavior from avatar rail ([37b0f8e](https://github.com/ZebraDevs/zeta_flutter/commit/37b0f8e284d0b734a1ca9b3e17fccbbca6c60fa5)) +* removed hit test behaviour from avatar rail ([#197](https://github.com/ZebraDevs/zeta_flutter/issues/197)) ([37b0f8e](https://github.com/ZebraDevs/zeta_flutter/commit/37b0f8e284d0b734a1ca9b3e17fccbbca6c60fa5)) +* set rounded to default to true ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +* used variable ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +* **UX-1161:** banner title alignment when centered ([#200](https://github.com/ZebraDevs/zeta_flutter/issues/200)) ([044ed2e](https://github.com/ZebraDevs/zeta_flutter/commit/044ed2ea47ae9e82ce7433ff251582a2fc861271)) +* **UX-1298:** ZetaDialog button overflow ([51b4172](https://github.com/ZebraDevs/zeta_flutter/commit/51b4172d3e926e9fa2c87fd1be4f2c2ec5b4a71b)) +* **UX-1303:** Update avatar boarder width ([#202](https://github.com/ZebraDevs/zeta_flutter/issues/202)) ([51b4172](https://github.com/ZebraDevs/zeta_flutter/commit/51b4172d3e926e9fa2c87fd1be4f2c2ec5b4a71b)) +* **UX-1309:** Wrapped initials with FittedBox inside ZetaAvatar so that the text scales correctly with device text scaling ([6e13502](https://github.com/ZebraDevs/zeta_flutter/commit/6e135020cbddcf7e448abdfadd7eaca127acff56)) + + +### 📈 Documentation + +* added description for status chip ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) +* added more info to global header. Info about where to use the header ([#206](https://github.com/ZebraDevs/zeta_flutter/issues/206)) ([c9c84c0](https://github.com/ZebraDevs/zeta_flutter/commit/c9c84c0d7b80934e59b76ba3501639d6de37f35a)) + + +### ⛓️ Dependencies + +* **automated:** Update icons ([#207](https://github.com/ZebraDevs/zeta_flutter/issues/207)) ([87a5df1](https://github.com/ZebraDevs/zeta_flutter/commit/87a5df158653a7623f09894961fe985635362d95)) + + +### 🧪 Tests + +* Add a log on debugFillPropertiesTest if it fails ([51b4172](https://github.com/ZebraDevs/zeta_flutter/commit/51b4172d3e926e9fa2c87fd1be4f2c2ec5b4a71b)) +* Added debugfillproperties test to chip_test ([321b57d](https://github.com/ZebraDevs/zeta_flutter/commit/321b57de1cfc39cc940d28716fa1a49efc577d84)) +* **UX-1305:** Update avatar test ([51b4172](https://github.com/ZebraDevs/zeta_flutter/commit/51b4172d3e926e9fa2c87fd1be4f2c2ec5b4a71b)) +* wrote tests for status chip ([c69d3b7](https://github.com/ZebraDevs/zeta_flutter/commit/c69d3b76afcd14a8ffa5777483687f818ac70876)) + +## [0.17.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.16.0...v0.17.0) (2024-10-28) + + +### ✨ New Features + +* added label to avatar ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) +* created avatar rail ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) +* **UX-1231:** created avatar rail ([#196](https://github.com/ZebraDevs/zeta_flutter/issues/196)) ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) + + +### 🪲 Bug Fixes + +* added MainAxisSize.min to avatar column to regulate height ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) +* widgetbook max lines avatar rail ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) + + +### 🧪 Tests + +* changed the word 'Dimension' to 'Dimensions' ([#194](https://github.com/ZebraDevs/zeta_flutter/issues/194)) ([17a6995](https://github.com/ZebraDevs/zeta_flutter/commit/17a69951628d17edc635408d1b026abbf3dc92c5)) +* created tests for avatar rail ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) +* fixed parent folder for stepper ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) + + +### 🧹 Miscellaneous Chores + +* **automated:** Lint commit and format ([823370e](https://github.com/ZebraDevs/zeta_flutter/commit/823370e161dd753abd22060d8dd862752dc8a34f)) + ## [0.16.0](https://github.com/ZebraDevs/zeta_flutter/compare/v0.15.2...v0.16.0) (2024-10-22) diff --git a/LICENSE b/LICENSE index d4f367ee..ced46520 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,21 @@ -Copyright 2024 Zebra Technologies +MIT License -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Copyright (c) 2024 Zebra Technologies Inc. -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/custom_docs/components/Color/flutter.md b/custom_docs/components/Color/flutter.md index 8afda978..f58167cf 100644 --- a/custom_docs/components/Color/flutter.md +++ b/custom_docs/components/Color/flutter.md @@ -77,7 +77,7 @@ ZetaColors has the following modifiers: - positive, onPositive, negative, onNegative, warning, onWarning, info, onInfo - surface, onSurface, surfaceDisabled, surfaceHover, surfaceSecondary, surfaceTertiary, surfaceSelectedHover, surfaceSelected - background, onBackground -- textDefault, textSubtle, textDisabled, textInverse, +- mainDefault, mainSubtle, mainDisabled, textInverse, - borderDefault, borderSubtle, borderDisabled, borderSelected, - white, black - link, linkVisited, diff --git a/example/.metadata b/example/.metadata index 8973d6ca..706ff779 100644 --- a/example/.metadata +++ b/example/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49" + revision: "603104015dd692ea3403755b55d07813d5cf8965" channel: "stable" project_type: app @@ -13,11 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 - base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + create_revision: 603104015dd692ea3403755b55d07813d5cf8965 + base_revision: 603104015dd692ea3403755b55d07813d5cf8965 - platform: android - create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 - base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49 + create_revision: 603104015dd692ea3403755b55d07813d5cf8965 + base_revision: 603104015dd692ea3403755b55d07813d5cf8965 # User provided section diff --git a/example/android/.gitignore b/example/android/.gitignore index 6f568019..55afd919 100644 --- a/example/android/.gitignore +++ b/example/android/.gitignore @@ -7,7 +7,7 @@ gradle-wrapper.jar GeneratedPluginRegistrant.java # Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +# See https://flutter.dev/to/reference-keystore key.properties **/*.keystore **/*.jks diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 6b8eb878..b189d473 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -5,43 +5,29 @@ plugins { id "dev.flutter.flutter-gradle-plugin" } -def localProperties = new Properties() -def localPropertiesFile = rootProject.file("local.properties") -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader("UTF-8") { reader -> - localProperties.load(reader) - } -} - -def flutterVersionCode = localProperties.getProperty("flutter.versionCode") -if (flutterVersionCode == null) { - flutterVersionCode = "1" -} - -def flutterVersionName = localProperties.getProperty("flutter.versionName") -if (flutterVersionName == null) { - flutterVersionName = "1.0" -} - android { namespace = "com.zebra.zeta.example" compileSdk = flutter.compileSdkVersion - ndkVersion = flutter.ndkVersion + ndkVersion = "25.1.8937393" compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17 } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.zebra.zeta.example" // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion - versionCode = flutterVersionCode.toInteger() - versionName = flutterVersionName + versionCode = flutter.versionCode + versionName = flutter.versionName } buildTypes { diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 3b5b324f..25971708 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1,3 +1,3 @@ -org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError +org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index e1ca574e..9c5194d3 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip \ No newline at end of file diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 536165d3..a00f9ea7 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -18,8 +18,8 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.3.0" apply false - id "org.jetbrains.kotlin.android" version "1.7.10" apply false + id "com.android.application" version "8.3.1" apply false + id "org.jetbrains.kotlin.android" version "1.8.22" apply false } include ":app" diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 15073017..47f4958e 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -6,7 +6,7 @@ PODS: - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - sqflite (0.0.3): + - sqflite_darwin (0.0.4): - Flutter - FlutterMacOS - url_launcher_ios (0.0.1): @@ -16,7 +16,7 @@ DEPENDENCIES: - Flutter (from `Flutter`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - - sqflite (from `.symlinks/plugins/sqflite/darwin`) + - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) EXTERNAL SOURCES: @@ -26,8 +26,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/path_provider_foundation/darwin" shared_preferences_foundation: :path: ".symlinks/plugins/shared_preferences_foundation/darwin" - sqflite: - :path: ".symlinks/plugins/sqflite/darwin" + sqflite_darwin: + :path: ".symlinks/plugins/sqflite_darwin/darwin" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" @@ -35,7 +35,7 @@ SPEC CHECKSUMS: Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 - sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec + sqflite_darwin: a553b1fd6fe66f53bbb0fe5b4f5bab93f08d7a13 url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe PODFILE CHECKSUM: c4c93c5f6502fe2754f48404d3594bf779584011 diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift index 70693e4a..b6363034 100644 --- a/example/ios/Runner/AppDelegate.swift +++ b/example/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import UIKit import Flutter -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/example/lib/home.dart b/example/lib/home.dart index db398437..2716ed1b 100644 --- a/example/lib/home.dart +++ b/example/lib/home.dart @@ -6,7 +6,7 @@ import 'package:zeta_example/pages/components/avatar_example.dart'; import 'package:zeta_example/pages/components/badges_example.dart'; import 'package:zeta_example/pages/components/banner_example.dart'; import 'package:zeta_example/pages/components/bottom_sheet_example.dart'; -import 'package:zeta_example/pages/components/breadcrumbs_example.dart'; +import 'package:zeta_example/pages/components/breadcrumb_example.dart'; import 'package:zeta_example/pages/components/button_example.dart'; import 'package:zeta_example/pages/components/chat_item_example.dart'; import 'package:zeta_example/pages/components/checkbox_example.dart'; @@ -26,6 +26,7 @@ import 'package:zeta_example/pages/components/navigation_rail_example.dart'; import 'package:zeta_example/pages/components/notification_list_example.dart'; import 'package:zeta_example/pages/components/phone_input_example.dart'; import 'package:zeta_example/pages/components/radio_example.dart'; +import 'package:zeta_example/pages/components/range_selector_example.dart'; import 'package:zeta_example/pages/components/screen_header_bar_example.dart'; import 'package:zeta_example/pages/components/select_input_example.dart'; @@ -67,7 +68,7 @@ final List components = [ Component(BannerExample.name, (context) => const BannerExample()), Component(BadgesExample.name, (context) => const BadgesExample()), Component(BottomSheetExample.name, (context) => const BottomSheetExample()), - Component(BreadCrumbsExample.name, (context) => const BreadCrumbsExample()), + Component(BreadcrumbExample.name, (context) => const BreadcrumbExample()), Component(ButtonExample.name, (context) => const ButtonExample()), Component(ChatItemExample.name, (context) => const ChatItemExample()), Component(CheckBoxExample.name, (context) => const CheckBoxExample()), @@ -89,6 +90,7 @@ final List components = [ Component(TabsExample.name, (context) => const TabsExample()), Component(DialPadExample.name, (context) => const DialPadExample()), Component(RadioButtonExample.name, (context) => const RadioButtonExample()), + Component(RangeSelectorExample.name, (context) => const RangeSelectorExample()), Component(SwitchExample.name, (context) => const SwitchExample()), Component(SliderExample.name, (context) => const SliderExample()), Component(DateInputExample.name, (context) => const DateInputExample()), @@ -160,7 +162,7 @@ class _HomeState extends State { final _theme = theme..sort((a, b) => a.name.compareTo(b.name)); return ExampleScaffold( // x-release-please-start-version - name: 'zeta_flutter v0.16.0', + name: 'zeta_flutter v0.20.1', // x-release-please-end child: SingleChildScrollView( child: Column( diff --git a/example/lib/pages/components/avatar_example.dart b/example/lib/pages/components/avatar_example.dart index dcc32b14..4d638d0e 100644 --- a/example/lib/pages/components/avatar_example.dart +++ b/example/lib/pages/components/avatar_example.dart @@ -18,6 +18,13 @@ class AvatarExample extends StatelessWidget { ); return ExampleScaffold( + actions: [ + ZetaAvatar.initials( + initials: 'W W', + size: ZetaAvatarSize.xxs, + backgroundColor: Zeta.of(context).colors.primitives.green, + ), + ], name: AvatarExample.name, child: SingleChildScrollView( scrollDirection: Axis.horizontal, @@ -25,6 +32,11 @@ class AvatarExample extends StatelessWidget { padding: EdgeInsets.all(Zeta.of(context).spacing.medium), child: Column( children: [ + ZetaAvatar.initials( + initials: 'WW', + size: ZetaAvatarSize.xxs, + backgroundColor: Zeta.of(context).colors.primitives.green, + ), Column( children: [ Text( diff --git a/example/lib/pages/components/banner_example.dart b/example/lib/pages/components/banner_example.dart index 800879fc..9fb2a5c2 100644 --- a/example/lib/pages/components/banner_example.dart +++ b/example/lib/pages/components/banner_example.dart @@ -23,7 +23,7 @@ class BannerExample extends StatelessWidget { type: ZetaBannerStatus.primary, title: 'Centered', context: context, - titleStart: true, + titleCenter: true, leadingIcon: ZetaIcons.info, ), ZetaBanner( @@ -35,13 +35,13 @@ class BannerExample extends StatelessWidget { type: ZetaBannerStatus.primary, context: context, title: 'Title left with arrow', - titleStart: true, + titleCenter: true, trailing: ZetaIcon(ZetaIcons.chevron_right), ), ZetaBanner( type: ZetaBannerStatus.primary, title: 'Title left + Icon', - titleStart: true, + titleCenter: true, context: context, leadingIcon: ZetaIcons.info, ), @@ -49,7 +49,7 @@ class BannerExample extends StatelessWidget { type: ZetaBannerStatus.primary, context: context, title: 'Title left + Icon with Arrow', - titleStart: true, + titleCenter: true, leadingIcon: ZetaIcons.info, trailing: IconButton( icon: ZetaIcon(ZetaIcons.chevron_right), @@ -71,7 +71,7 @@ class BannerExample extends StatelessWidget { type: ZetaBannerStatus.positive, context: context, title: 'Centered', - titleStart: true, + titleCenter: true, leadingIcon: ZetaIcons.info, trailing: IconButton( icon: ZetaIcon(ZetaIcons.chevron_right), @@ -92,7 +92,7 @@ class BannerExample extends StatelessWidget { type: ZetaBannerStatus.warning, title: 'Centered', context: context, - titleStart: true, + titleCenter: true, leadingIcon: ZetaIcons.info, trailing: IconButton( icon: ZetaIcon(ZetaIcons.chevron_right), @@ -113,7 +113,7 @@ class BannerExample extends StatelessWidget { type: ZetaBannerStatus.negative, title: 'Centered', context: context, - titleStart: true, + titleCenter: true, leadingIcon: ZetaIcons.info, trailing: IconButton( icon: ZetaIcon(ZetaIcons.chevron_right), diff --git a/example/lib/pages/components/breadcrumb_example.dart b/example/lib/pages/components/breadcrumb_example.dart new file mode 100644 index 00000000..948f0ceb --- /dev/null +++ b/example/lib/pages/components/breadcrumb_example.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; +import 'package:zeta_example/widgets.dart'; +import 'package:zeta_flutter/zeta_flutter.dart'; + +class BreadcrumbExample extends StatefulWidget { + static const String name = 'Breadcrumb'; + + const BreadcrumbExample({super.key}); + + @override + State createState() => _BreadcrumbExampleState(); +} + +class _BreadcrumbExampleState extends State { + List _children = []; + + @override + void initState() { + super.initState(); + _children = [ + ZetaBreadcrumbItem(label: 'Breadcrumb', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 1', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 2', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 3', icon: ZetaIcons.star, onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 4', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 5', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 6', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 7', onPressed: () {}), + ]; + } + + @override + Widget build(BuildContext context) { + return ExampleScaffold( + name: 'Breadcrumb', + child: Center( + child: SingleChildScrollView( + child: SizedBox( + width: double.infinity, + child: Column( + children: [ + ZetaBreadcrumb(children: _children.sublist(0, 1)), + ZetaBreadcrumb(children: _children.sublist(0, 2)), + ZetaBreadcrumb(children: _children.sublist(0, 3)), + ZetaBreadcrumb(children: _children.sublist(0, 4), maxItemsShown: 3), + ZetaBreadcrumb(children: _children.sublist(0, 5), maxItemsShown: 5), + ZetaBreadcrumb(children: _children.sublist(0, 6), maxItemsShown: 3), + ZetaBreadcrumb(children: _children.sublist(0, 7)), + ZetaBreadcrumb(children: _children, maxItemsShown: 1), + ].gap(50), + ), + ), + ), + ), + ); + } +} diff --git a/example/lib/pages/components/breadcrumbs_example.dart b/example/lib/pages/components/breadcrumbs_example.dart deleted file mode 100644 index b6e0c7fc..00000000 --- a/example/lib/pages/components/breadcrumbs_example.dart +++ /dev/null @@ -1,58 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:zeta_example/widgets.dart'; -import 'package:zeta_flutter/zeta_flutter.dart'; - -class BreadCrumbsExample extends StatefulWidget { - static const String name = 'Breadcrumbs'; - - const BreadCrumbsExample({super.key}); - - @override - State createState() => _BreadCrumbsExampleState(); -} - -class _BreadCrumbsExampleState extends State { - List _children = [ - ZetaBreadCrumb( - label: 'Icon before with separator', - onPressed: () { - print("Breadcrumb " + 0.toString() + "Clicked"); - }, - ), - ]; - int index = 1; - - @override - Widget build(BuildContext context) { - return ExampleScaffold( - name: 'Breadcrumbs', - child: Center( - child: SingleChildScrollView( - child: SizedBox( - width: double.infinity, - child: Column(children: [ - ZetaBreadCrumbs(children: _children), - SizedBox( - height: 50, - ), - FilledButton( - onPressed: () { - setState(() { - _children.add( - ZetaBreadCrumb( - label: 'Icon before with seperator', - onPressed: () { - print("Breadcrumb clicked"); - }, - ), - ); - index++; - }); - }, - child: Text("Add Breadcrumb")) - ])), - ), - ), - ); - } -} diff --git a/example/lib/pages/components/button_example.dart b/example/lib/pages/components/button_example.dart index 926379d9..379f95f3 100644 --- a/example/lib/pages/components/button_example.dart +++ b/example/lib/pages/components/button_example.dart @@ -36,7 +36,7 @@ class _ButtonExampleState extends State { fabs = [ ZetaFAB( scrollController: _scrollController, - label: 'Small Circle Primary', + label: 'Small Circle Disabled', size: ZetaFabSize.small, expanded: false, shape: ZetaWidgetBorder.full, @@ -45,7 +45,7 @@ class _ButtonExampleState extends State { ZetaFAB( scrollController: _scrollController, expanded: false, - label: 'Small Rounded Primary', + label: 'Small Rounded Secondary', size: ZetaFabSize.small, shape: ZetaWidgetBorder.rounded, type: ZetaFabType.secondary, @@ -53,7 +53,7 @@ class _ButtonExampleState extends State { ), ZetaFAB( scrollController: _scrollController, - label: 'Small Sharp Primary', + label: 'Small Sharp Inverse', size: ZetaFabSize.small, shape: ZetaWidgetBorder.sharp, expanded: false, @@ -62,7 +62,7 @@ class _ButtonExampleState extends State { ), ZetaFAB( scrollController: _scrollController, - label: 'Large Circle Primary', + label: 'Large Circle Secondary', size: ZetaFabSize.large, shape: ZetaWidgetBorder.full, type: ZetaFabType.secondary, @@ -71,7 +71,7 @@ class _ButtonExampleState extends State { ), ZetaFAB( scrollController: _scrollController, - label: 'Large Rounded Secondary', + label: 'Large Rounded Inverse', size: ZetaFabSize.large, shape: ZetaWidgetBorder.rounded, expanded: false, @@ -80,7 +80,7 @@ class _ButtonExampleState extends State { ), ZetaFAB( scrollController: _scrollController, - label: 'Large Sharp Secondary', + label: 'Large Sharp Primary', size: ZetaFabSize.large, shape: ZetaWidgetBorder.sharp, type: ZetaFabType.primary, diff --git a/example/lib/pages/components/chip_example.dart b/example/lib/pages/components/chip_example.dart index 72a96407..39bd4cc1 100644 --- a/example/lib/pages/components/chip_example.dart +++ b/example/lib/pages/components/chip_example.dart @@ -25,6 +25,7 @@ class _ChipExampleState extends State { label: 'Label', leading: ZetaIcon(ZetaIcons.user), trailing: IconButton(icon: Icon(ZetaIcons.close), onPressed: () {}), + onTap: () {}, ), ]); @@ -42,6 +43,7 @@ class _ChipExampleState extends State { leading: ZetaIcon(ZetaIcons.star), draggable: true, data: 'Assist chip', + onTap: () {}, ), ), ]); @@ -60,9 +62,25 @@ class _ChipExampleState extends State { selected: true, data: 'Filter chip', draggable: true, + onTap: (bool selected) {}, ), ), ]); + + final Widget statusChipExample = Column(children: [ + Text( + 'Status Chip', + textAlign: TextAlign.center, + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 10), + ZetaStatusChip( + label: 'Label', + data: 'Status chip', + draggable: true, + ), + ]); + final colors = Zeta.of(context).colors; return ExampleScaffold( name: ChipExample.name, @@ -74,6 +92,7 @@ class _ChipExampleState extends State { inputChipExample, assistChipExample, filterChipExample, + statusChipExample, const SizedBox(height: 100), DragTarget( onAcceptWithDetails: (details) => setState(() => chipType = details.data), diff --git a/example/lib/pages/components/list_item_example.dart b/example/lib/pages/components/list_item_example.dart index fa3a010a..18572b55 100644 --- a/example/lib/pages/components/list_item_example.dart +++ b/example/lib/pages/components/list_item_example.dart @@ -38,6 +38,14 @@ class _ListItemExampleState extends State { primaryText: 'List Item', secondaryText: 'Descriptor', )), + _buildListItem( + 'Custom Title', + ZetaListItem( + title: ZetaButton( + label: 'Custom Title Button', + onPressed: () {}, + ), + )), _buildListItem( 'Icon Left', ZetaListItem(primaryText: 'List Item', leading: ZetaIcon(ZetaIcons.star)), diff --git a/example/lib/pages/components/notification_list_example.dart b/example/lib/pages/components/notification_list_example.dart index 3c3a3a92..53afb54c 100644 --- a/example/lib/pages/components/notification_list_example.dart +++ b/example/lib/pages/components/notification_list_example.dart @@ -87,6 +87,7 @@ class NotificationListItemExample extends StatelessWidget { leading: ZetaNotificationBadge.avatar( avatar: ZetaAvatar.initials( initials: "JS", + semanticUpperBadgeLabel: 'Urgent', lowerBadge: ZetaAvatarBadge.icon( color: colors.surfacePositive, icon: Icons.check, diff --git a/example/lib/pages/components/range_selector_example.dart b/example/lib/pages/components/range_selector_example.dart new file mode 100644 index 00000000..1820dec1 --- /dev/null +++ b/example/lib/pages/components/range_selector_example.dart @@ -0,0 +1,202 @@ +import 'package:flutter/material.dart'; +import 'package:zeta_example/widgets.dart'; +import 'package:zeta_flutter/zeta_flutter.dart'; + +class RangeSelectorExample extends StatefulWidget { + static const String name = 'RangeSelector'; + + const RangeSelectorExample({super.key}); + + @override + State createState() => _RangeSelectorExampleState(); +} + +class _RangeSelectorExampleState extends State { + double value = 0.5; + + @override + Widget build(BuildContext context) { + return ExampleScaffold( + name: RangeSelectorExample.name, + child: SingleChildScrollView( + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Column( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Slider - Rounded - Continuous', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + onChange: (value) { + print(value.start); + print(value.end); + }, + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + showValues: false, + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Slider - Rounded - Stepped', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + onChange: (value) {}, + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + showValues: false, + divisions: 10, + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Slider - Rounded - Disabled', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + showValues: false, + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Slider - Sharp - Continuous', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + onChange: (value) {}, + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + showValues: false, + rounded: false, + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Slider - Sharp - Stepped', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + onChange: (value) {}, + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + showValues: false, + divisions: 10, + rounded: false, + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Slider - Sharp - Disabled', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + showValues: false, + rounded: false, + ), + ].gap(12), + ), + SizedBox( + height: 32, + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Selector - Rounded - Continuous', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + onChange: (value) {}, + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + label: 'Label', + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Selector - Rounded - Stepped', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + onChange: (value) {}, + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + label: 'Label', + divisions: 10, + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Selector - Rounded - Disabled', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + label: 'Label', + divisions: 10, + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Selector - Sharp - Continuous', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + onChange: (value) {}, + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + label: 'Label', + rounded: false, + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Selector - Sharp - Stepped', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + onChange: (value) {}, + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + label: 'Label', + rounded: false, + divisions: 10, + ), + ].gap(12), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Range Selector - Sharp - Disabled', style: ZetaTextStyles.bodyLarge), + ZetaRangeSelector( + initialValues: RangeValues(20, 80), + min: 0, + max: 100, + label: 'Label', + rounded: false, + divisions: 10, + ), + ].gap(12), + ), + ].gap(32), + ).paddingVertical(32), + ), + ), + ); + } +} diff --git a/example/macos/Runner/AppDelegate.swift b/example/macos/Runner/AppDelegate.swift index 8e02df28..b3c17614 100644 --- a/example/macos/Runner/AppDelegate.swift +++ b/example/macos/Runner/AppDelegate.swift @@ -6,4 +6,8 @@ class AppDelegate: FlutterAppDelegate { override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return true } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } } diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 7e1ad53a..7a50d00b 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - widgetbook: ^3.1.0 + widgetbook: ^3.10.0 http: any flutter: diff --git a/example/widgetbook/main.dart b/example/widgetbook/main.dart index 6a5202c6..c381b4e0 100644 --- a/example/widgetbook/main.dart +++ b/example/widgetbook/main.dart @@ -16,7 +16,7 @@ import 'pages/components/avatar_widgetbook.dart'; import 'pages/components/badges_widgetbook.dart'; import 'pages/components/banner_widgetbook.dart'; import 'pages/components/bottom_sheet_widgetbook.dart'; -import 'pages/components/breadcrumbs_widgetbook.dart'; +import 'pages/components/breadcrumb_widgetbook.dart'; import 'pages/components/button_widgetbook.dart'; import 'pages/components/chat_item_widgetbook.dart'; import 'pages/components/checkbox_widgetbook.dart'; @@ -38,6 +38,7 @@ import 'pages/components/password_input_widgetbook.dart'; import 'pages/components/phone_input_widgetbook.dart'; import 'pages/components/progress_widgetbook.dart'; import 'pages/components/radio_widgetbook.dart'; +import 'pages/components/range_selector_widgetbook.dart'; import 'pages/components/screen_header_bar_widgetbook.dart'; import 'pages/components/search_bar_widgetbook.dart'; import 'pages/components/segmented_control_widgetbook.dart'; @@ -163,6 +164,7 @@ class _HotReloadState extends State { WidgetbookUseCase(name: 'Filter Chip', builder: (context) => filterChipUseCase(context)), WidgetbookUseCase(name: 'Input Chip', builder: (context) => inputChipUseCase(context)), WidgetbookUseCase(name: 'Assist Chip', builder: (context) => assistChipUseCase(context)), + WidgetbookUseCase(name: 'Status Chip', builder: (context) => statusChipUseCase(context)), ], ), WidgetbookComponent( @@ -191,7 +193,7 @@ class _HotReloadState extends State { WidgetbookUseCase(name: 'Accordion', builder: (context) => accordionUseCase(context)), WidgetbookUseCase(name: 'Banners', builder: (context) => bannerUseCase(context)), WidgetbookUseCase(name: 'Bottom Sheet', builder: (context) => bottomSheetContentUseCase(context)), - WidgetbookUseCase(name: 'BreadCrumbs', builder: (context) => breadCrumbsUseCase(context)), + WidgetbookUseCase(name: 'Breadcrumb', builder: (context) => breadcrumbUseCase(context)), WidgetbookUseCase(name: 'Checkbox', builder: (context) => checkboxUseCase(context)), WidgetbookUseCase(name: 'Comms Button', builder: (context) => commsButtonUseCase(context)), WidgetbookUseCase(name: 'Date Input', builder: (context) => dateInputUseCase(context)), @@ -211,6 +213,7 @@ class _HotReloadState extends State { WidgetbookUseCase(name: 'Segmented Control', builder: (context) => segmentedControlUseCase(context)), WidgetbookUseCase(name: 'Select Input', builder: (context) => selectInputUseCase(context)), WidgetbookUseCase(name: 'Slider', builder: (context) => sliderUseCase(context)), + WidgetbookUseCase(name: 'Range Selector', builder: (context) => rangeSelectorUseCase(context)), WidgetbookUseCase(name: 'Snack Bar', builder: (context) => snackBarUseCase(context)), WidgetbookUseCase(name: 'Stepper Input', builder: (context) => stepperInputUseCase(context)), WidgetbookUseCase(name: 'Stepper', builder: (context) => stepperUseCase(context)), diff --git a/example/widgetbook/pages/components/banner_widgetbook.dart b/example/widgetbook/pages/components/banner_widgetbook.dart index 9061c6d5..569262c8 100644 --- a/example/widgetbook/pages/components/banner_widgetbook.dart +++ b/example/widgetbook/pages/components/banner_widgetbook.dart @@ -15,7 +15,7 @@ Widget bannerUseCase(BuildContext context) { labelBuilder: enumLabelBuilder, ), leadingIcon: iconKnob(context, nullable: true), - titleStart: context.knobs.boolean(label: 'Center title'), + titleCenter: context.knobs.boolean(label: 'Center title'), trailing: ZetaIcon(iconKnob( context, nullable: true, diff --git a/example/widgetbook/pages/components/breadcrumb_widgetbook.dart b/example/widgetbook/pages/components/breadcrumb_widgetbook.dart new file mode 100644 index 00000000..1dc8c1d4 --- /dev/null +++ b/example/widgetbook/pages/components/breadcrumb_widgetbook.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:zeta_flutter/zeta_flutter.dart'; + +import '../../utils/scaffold.dart'; +import 'package:widgetbook/widgetbook.dart'; + +final List children = [ + ZetaBreadcrumbItem(label: 'Breadcrumb', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 1', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 2', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 3', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 4', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 5', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 6', onPressed: () {}) +]; + +Widget breadcrumbUseCase(BuildContext context) => WidgetbookScaffold( + builder: (context, _) => Center( + child: BreadcrumbExample(context, children), + ), + ); + +class BreadcrumbExample extends StatelessWidget { + BreadcrumbExample(this.context, this.children); + final BuildContext context; + final List children; + + @override + Widget build(BuildContext _) { + return SingleChildScrollView( + child: SizedBox( + width: double.infinity, + child: Column( + children: [ + ZetaBreadcrumb( + rounded: context.knobs.boolean(label: 'Rounded', initialValue: true), + children: context.knobs.list( + label: 'Items', + labelBuilder: (value) => value.length.toString(), + initialOption: children.sublist(0, 4), + options: List.generate( + children.length, + (index) => children.sublist(0, index + 1), + ), + ), + maxItemsShown: context.knobs.int.slider( + label: 'Max Items Shown', + initialValue: 2, + min: 1, + max: children.length, + ), + ), + ], + ), + ), + ); + } +} diff --git a/example/widgetbook/pages/components/breadcrumbs_widgetbook.dart b/example/widgetbook/pages/components/breadcrumbs_widgetbook.dart deleted file mode 100644 index 63c99216..00000000 --- a/example/widgetbook/pages/components/breadcrumbs_widgetbook.dart +++ /dev/null @@ -1,63 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:zeta_flutter/zeta_flutter.dart'; - -import '../../utils/scaffold.dart'; -import '../../utils/utils.dart'; - -Widget breadCrumbsUseCase(BuildContext context) => WidgetbookScaffold( - builder: (context, _) => Center( - child: BreadCrumbExample(context), - ), - ); - -class BreadCrumbExample extends StatefulWidget { - const BreadCrumbExample(this.c); - final BuildContext c; - - @override - State createState() => _BreadCrumbExampleState(); -} - -class _BreadCrumbExampleState extends State { - List _children = [ - ZetaBreadCrumb( - label: 'Icon before with seperator', - onPressed: () { - print("Breadcrumb " + 0.toString() + "Clicked"); - }, - ), - ]; - int index = 1; - - @override - Widget build(BuildContext _) { - return SingleChildScrollView( - child: SizedBox( - width: double.infinity, - child: Column(children: [ - ZetaBreadCrumbs( - children: _children, - activeIcon: iconKnob(context), - ), - SizedBox( - height: 50, - ), - FilledButton( - onPressed: () { - setState(() { - _children.add( - ZetaBreadCrumb( - label: 'Icon before with seperator', - onPressed: () { - print("Breadcrumb clicked"); - }, - ), - ); - index++; - }); - }, - child: Text("Add Breadcrumb")) - ])), - ); - } -} diff --git a/example/widgetbook/pages/components/chip_widgetbook.dart b/example/widgetbook/pages/components/chip_widgetbook.dart index d8e7848a..ca802db2 100644 --- a/example/widgetbook/pages/components/chip_widgetbook.dart +++ b/example/widgetbook/pages/components/chip_widgetbook.dart @@ -10,6 +10,8 @@ Widget inputChipUseCase(BuildContext context) { return WidgetbookScaffold( builder: (context, _) => ZetaInputChip( + onTap: context.knobs.boolean(label: 'Disabled', initialValue: false) ? null : () {}, + rounded: context.knobs.boolean(label: 'Rounded', initialValue: true), label: context.knobs.string(label: 'Label', initialValue: 'Label'), leading: context.knobs.boolean(label: 'Avatar', initialValue: true) ? ZetaAvatar( @@ -26,6 +28,8 @@ Widget inputChipUseCase(BuildContext context) { Widget filterChipUseCase(BuildContext context) => WidgetbookScaffold( builder: (context, _) => ZetaFilterChip( + onTap: context.knobs.boolean(label: 'Disabled', initialValue: false) ? null : (i) {}, + rounded: context.knobs.boolean(label: 'Rounded', initialValue: true), label: context.knobs.string(label: 'Label', initialValue: 'Label'), selected: context.knobs.boolean(label: 'Selected', initialValue: true), ), @@ -34,8 +38,21 @@ Widget filterChipUseCase(BuildContext context) => WidgetbookScaffold( Widget assistChipUseCase(BuildContext context) { return WidgetbookScaffold( builder: (context, _) => ZetaAssistChip( + onTap: context.knobs.boolean(label: 'Disabled', initialValue: false) ? null : () {}, + rounded: context.knobs.boolean(label: 'Rounded', initialValue: true), label: context.knobs.string(label: 'Label', initialValue: 'Label'), leading: ZetaIcon(iconKnob(context)), ), ); } + +Widget statusChipUseCase(BuildContext context) { + return WidgetbookScaffold( + builder: (context, _) => ZetaStatusChip( + label: context.knobs.string(label: 'Label', initialValue: 'Label'), + draggable: context.knobs.boolean(label: 'Draggable', initialValue: false), + rounded: context.knobs.boolean(label: 'Rounded', initialValue: true), + onDragCompleted: () => print('Drag completed'), + ), + ); +} diff --git a/example/widgetbook/pages/components/navigation_bar_widgetbook.dart b/example/widgetbook/pages/components/navigation_bar_widgetbook.dart index 9012b129..6cde9ff3 100644 --- a/example/widgetbook/pages/components/navigation_bar_widgetbook.dart +++ b/example/widgetbook/pages/components/navigation_bar_widgetbook.dart @@ -15,6 +15,7 @@ Widget navigationBarUseCase(BuildContext context) { bool showButton = context.knobs.boolean(label: 'Button'); int? dividerIndex = context.knobs.intOrNull.slider(label: 'Divider', min: 0, max: 6, initialValue: null); bool showSplit = context.knobs.boolean(label: 'Split Items'); + bool shrinkItems = context.knobs.boolean(label: 'Shrink Items'); return StatefulBuilder(builder: (context, setState) { return WidgetbookScaffold( builder: (context, _) => ZetaNavigationBar( @@ -24,6 +25,7 @@ Widget navigationBarUseCase(BuildContext context) { currentIndex: currIndex, splitItems: showSplit, dividerIndex: dividerIndex, + shrinkItems: shrinkItems, ), ); }); diff --git a/example/widgetbook/pages/components/progress_widgetbook.dart b/example/widgetbook/pages/components/progress_widgetbook.dart index 4444d0a4..9a86c56a 100644 --- a/example/widgetbook/pages/components/progress_widgetbook.dart +++ b/example/widgetbook/pages/components/progress_widgetbook.dart @@ -26,7 +26,7 @@ Widget progressBarUseCase(BuildContext context) => WidgetbookScaffold( Widget progressCircleUseCase(BuildContext context) => WidgetbookScaffold( builder: (context, _) => ZetaProgressCircle( - progress: context.knobs.double.slider(label: 'Progress', min: 0, max: 1, initialValue: 0.5).toDouble(), + progress: context.knobs.double.input(label: 'Progress', initialValue: 0.5), size: context.knobs.list( initialOption: ZetaCircleSizes.xl, label: 'Size', @@ -34,5 +34,7 @@ Widget progressCircleUseCase(BuildContext context) => WidgetbookScaffold( labelBuilder: enumLabelBuilder, ), onCancel: context.knobs.boolean(label: "Can Cancel") ? () {} : null, + label: context.knobs.stringOrNull(label: 'Label'), + maxValue: context.knobs.double.input(label: 'Max Value', initialValue: 1), ), ); diff --git a/example/widgetbook/pages/components/range_selector_widgetbook.dart b/example/widgetbook/pages/components/range_selector_widgetbook.dart new file mode 100644 index 00000000..3c8bd50d --- /dev/null +++ b/example/widgetbook/pages/components/range_selector_widgetbook.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; +import 'package:widgetbook/widgetbook.dart'; +import 'package:zeta_flutter/zeta_flutter.dart'; + +import '../../utils/scaffold.dart'; +import '../../utils/utils.dart'; + +Widget rangeSelectorUseCase(BuildContext context) { + return WidgetbookScaffold( + builder: (context, _) => RangeSelectorExample(context), + ); +} + +class RangeSelectorExample extends StatelessWidget { + RangeSelectorExample(this.context); + final BuildContext context; + + @override + Widget build(BuildContext _) { + return Padding( + padding: const EdgeInsets.all(16), + child: ZetaRangeSelector( + label: context.knobs.string(label: 'Label', initialValue: 'Range Selector'), + divisions: context.knobs.intOrNull.input(label: 'Divisions', initialValue: null), + showValues: context.knobs.boolean(label: 'Show Values', initialValue: true), + onChange: disabledKnob(context) ? null : (value) {}, + initialValues: context.knobs.range(label: 'Initial Range', initialValue: RangeValues(20, 80)), + min: context.knobs.double.input(label: 'Min', initialValue: 0), + max: context.knobs.double.input(label: 'Max', initialValue: 100), + ), + ); + } +} diff --git a/example/widgetbook/pages/introduction.dart b/example/widgetbook/pages/introduction.dart index 10798bdc..56bc2bc1 100644 --- a/example/widgetbook/pages/introduction.dart +++ b/example/widgetbook/pages/introduction.dart @@ -71,7 +71,7 @@ class _IntroductionWidgetbookState extends State { Expanded( child: Text( // x-release-please-start-version - 'zeta_flutter v0.16.0', + 'zeta_flutter v0.20.1', // x-release-please-end style: ZetaTextStyles.displayLarge.copyWith(fontSize: largeScreen ? null : 24), ), diff --git a/example/widgetbook/utils/utils.dart b/example/widgetbook/utils/utils.dart index c3fcdfcf..a5f782f7 100644 --- a/example/widgetbook/utils/utils.dart +++ b/example/widgetbook/utils/utils.dart @@ -37,3 +37,41 @@ bool disabledKnob(BuildContext context) => context.knobs.boolean( label: 'Disabled', initialValue: false, ); + +class RangeKnob extends Knob { + RangeKnob({ + required super.label, + required super.initialValue, + }); + @override + List get fields => [ + DoubleInputField( + name: 'min-$label', + initialValue: initialValue.start, + ), + DoubleInputField( + name: 'max-$label', + initialValue: initialValue.end, + ), + ]; + @override + RangeValues valueFromQueryGroup(Map group) { + return RangeValues( + valueOf('min-$label', group)!, + valueOf('max-$label', group)!, + ); + } +} + +extension RangeKnobBuilder on KnobsBuilder { + RangeValues range({ + required String label, + RangeValues initialValue = const RangeValues(0, 10), + }) => + onKnobAdded( + RangeKnob( + label: label, + initialValue: initialValue, + ), + )!; +} diff --git a/lib/generated/icons/icons.g.dart b/lib/generated/icons/icons.g.dart index d040c869..07973938 100644 --- a/lib/generated/icons/icons.g.dart +++ b/lib/generated/icons/icons.g.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; /// Current version of Zeta Icons // x-release-please-start-version -const zetaIconsVersion = '0.8.0'; +const zetaIconsVersion = '0.9.3'; // x-release-please-end /// Zeta Icons. Full list of icons can be found at [Zeta Icons](https://design.zebra.com/icons/). @@ -535,1106 +535,1121 @@ abstract class ZetaIcons { ///
Columns icon
static const IconData columns = IconData(0xe0aa, fontFamily: family, fontPackage: package); + ///
Comms Chat New icon
+ static const IconData comms_chat_new = IconData(0xe0ab, fontFamily: family, fontPackage: package); + + ///
Comms Chat icon
+ static const IconData comms_chat = IconData(0xe0ac, fontFamily: family, fontPackage: package); + + ///
Comms Chat Unread icon
+ static const IconData comms_chat_unread = IconData(0xe0ad, fontFamily: family, fontPackage: package); + ///
Contactless Pay icon
- static const IconData contactless_pay = IconData(0xe0ab, fontFamily: family, fontPackage: package); + static const IconData contactless_pay = IconData(0xe0ae, fontFamily: family, fontPackage: package); ///
Content icon
- static const IconData content = IconData(0xe0ac, fontFamily: family, fontPackage: package); + static const IconData content = IconData(0xe0af, fontFamily: family, fontPackage: package); ///
Contrast Image icon
- static const IconData contrast_image = IconData(0xe0ad, fontFamily: family, fontPackage: package); + static const IconData contrast_image = IconData(0xe0b0, fontFamily: family, fontPackage: package); ///
Contrast icon
- static const IconData contrast = IconData(0xe0ae, fontFamily: family, fontPackage: package); + static const IconData contrast = IconData(0xe0b1, fontFamily: family, fontPackage: package); ///
Conversation icon
- static const IconData conversation = IconData(0xe0af, fontFamily: family, fontPackage: package); + static const IconData conversation = IconData(0xe0b2, fontFamily: family, fontPackage: package); ///
Copy File icon
- static const IconData copy_file = IconData(0xe0b0, fontFamily: family, fontPackage: package); + static const IconData copy_file = IconData(0xe0b3, fontFamily: family, fontPackage: package); ///
Create New Folder icon
- static const IconData create_new_folder = IconData(0xe0b1, fontFamily: family, fontPackage: package); + static const IconData create_new_folder = IconData(0xe0b4, fontFamily: family, fontPackage: package); ///
Credit Card icon
- static const IconData credit_card = IconData(0xe0b2, fontFamily: family, fontPackage: package); + static const IconData credit_card = IconData(0xe0b5, fontFamily: family, fontPackage: package); ///
Credit Card Swipe icon
- static const IconData credit_card_swipe = IconData(0xe0b3, fontFamily: family, fontPackage: package); + static const IconData credit_card_swipe = IconData(0xe0b6, fontFamily: family, fontPackage: package); ///
Crop icon
- static const IconData crop = IconData(0xe0b4, fontFamily: family, fontPackage: package); + static const IconData crop = IconData(0xe0b7, fontFamily: family, fontPackage: package); ///
Dark Mode icon
- static const IconData dark_mode = IconData(0xe0b5, fontFamily: family, fontPackage: package); + static const IconData dark_mode = IconData(0xe0b8, fontFamily: family, fontPackage: package); ///
Dashboard icon
- static const IconData dashboard = IconData(0xe0b6, fontFamily: family, fontPackage: package); + static const IconData dashboard = IconData(0xe0b9, fontFamily: family, fontPackage: package); ///
Delete Forever icon
- static const IconData delete_forever = IconData(0xe0b7, fontFamily: family, fontPackage: package); + static const IconData delete_forever = IconData(0xe0ba, fontFamily: family, fontPackage: package); ///
Delete Outline icon
- static const IconData delete_outline = IconData(0xe0b8, fontFamily: family, fontPackage: package); + static const IconData delete_outline = IconData(0xe0bb, fontFamily: family, fontPackage: package); ///
Delete icon
- static const IconData delete = IconData(0xe0b9, fontFamily: family, fontPackage: package); + static const IconData delete = IconData(0xe0bc, fontFamily: family, fontPackage: package); ///
Desktop icon
- static const IconData desktop = IconData(0xe0ba, fontFamily: family, fontPackage: package); + static const IconData desktop = IconData(0xe0bd, fontFamily: family, fontPackage: package); ///
Device Settings icon
- static const IconData device_settings = IconData(0xe0bb, fontFamily: family, fontPackage: package); + static const IconData device_settings = IconData(0xe0be, fontFamily: family, fontPackage: package); ///
Devices Ecosystem icon
- static const IconData devices_ecosystem = IconData(0xe0bc, fontFamily: family, fontPackage: package); + static const IconData devices_ecosystem = IconData(0xe0bf, fontFamily: family, fontPackage: package); ///
Devices icon
- static const IconData devices = IconData(0xe0bd, fontFamily: family, fontPackage: package); + static const IconData devices = IconData(0xe0c0, fontFamily: family, fontPackage: package); ///
Dialpad icon
- static const IconData dialpad = IconData(0xe0be, fontFamily: family, fontPackage: package); + static const IconData dialpad = IconData(0xe0c1, fontFamily: family, fontPackage: package); ///
Dislike icon
- static const IconData dislike = IconData(0xe0bf, fontFamily: family, fontPackage: package); + static const IconData dislike = IconData(0xe0c2, fontFamily: family, fontPackage: package); ///
Distribute Horizontal icon
- static const IconData distribute_horizontal = IconData(0xe0c0, fontFamily: family, fontPackage: package); + static const IconData distribute_horizontal = IconData(0xe0c3, fontFamily: family, fontPackage: package); ///
Distribute Vertical icon
- static const IconData distribute_vertical = IconData(0xe0c1, fontFamily: family, fontPackage: package); + static const IconData distribute_vertical = IconData(0xe0c4, fontFamily: family, fontPackage: package); ///
Doc Attach icon
- static const IconData doc_attach = IconData(0xe0c2, fontFamily: family, fontPackage: package); + static const IconData doc_attach = IconData(0xe0c5, fontFamily: family, fontPackage: package); ///
Document icon
- static const IconData document = IconData(0xe0c3, fontFamily: family, fontPackage: package); + static const IconData document = IconData(0xe0c6, fontFamily: family, fontPackage: package); ///
Dollar icon
- static const IconData dollar = IconData(0xe0c4, fontFamily: family, fontPackage: package); + static const IconData dollar = IconData(0xe0c7, fontFamily: family, fontPackage: package); ///
Download icon
- static const IconData download = IconData(0xe0c5, fontFamily: family, fontPackage: package); + static const IconData download = IconData(0xe0c8, fontFamily: family, fontPackage: package); ///
Downloading icon
- static const IconData downloading = IconData(0xe0c6, fontFamily: family, fontPackage: package); + static const IconData downloading = IconData(0xe0c9, fontFamily: family, fontPackage: package); ///
Drop Down Circle icon
- static const IconData drop_down_circle = IconData(0xe0c7, fontFamily: family, fontPackage: package); + static const IconData drop_down_circle = IconData(0xe0ca, fontFamily: family, fontPackage: package); ///
Eas icon
- static const IconData eas = IconData(0xe0c8, fontFamily: family, fontPackage: package); + static const IconData eas = IconData(0xe0cb, fontFamily: family, fontPackage: package); ///
Edit Border icon
- static const IconData edit_border = IconData(0xe0c9, fontFamily: family, fontPackage: package); + static const IconData edit_border = IconData(0xe0cc, fontFamily: family, fontPackage: package); ///
Edit icon
- static const IconData edit = IconData(0xe0ca, fontFamily: family, fontPackage: package); + static const IconData edit = IconData(0xe0cd, fontFamily: family, fontPackage: package); ///
Email Alt icon
- static const IconData email_alt = IconData(0xe0cb, fontFamily: family, fontPackage: package); + static const IconData email_alt = IconData(0xe0ce, fontFamily: family, fontPackage: package); ///
Email Outline icon
- static const IconData email_outline = IconData(0xe0cc, fontFamily: family, fontPackage: package); + static const IconData email_outline = IconData(0xe0cf, fontFamily: family, fontPackage: package); ///
Email Reply All icon
- static const IconData email_reply_all = IconData(0xe0cd, fontFamily: family, fontPackage: package); + static const IconData email_reply_all = IconData(0xe0d0, fontFamily: family, fontPackage: package); ///
Email icon
- static const IconData email = IconData(0xe0ce, fontFamily: family, fontPackage: package); + static const IconData email = IconData(0xe0d1, fontFamily: family, fontPackage: package); ///
End Call icon
- static const IconData end_call = IconData(0xe0cf, fontFamily: family, fontPackage: package); + static const IconData end_call = IconData(0xe0d2, fontFamily: family, fontPackage: package); ///
Enterprise Diagnostics icon
- static const IconData enterprise_diagnostics = IconData(0xe0d0, fontFamily: family, fontPackage: package); + static const IconData enterprise_diagnostics = IconData(0xe0d3, fontFamily: family, fontPackage: package); ///
Environmental icon
- static const IconData environmental = IconData(0xe0d1, fontFamily: family, fontPackage: package); + static const IconData environmental = IconData(0xe0d4, fontFamily: family, fontPackage: package); ///
Error Outline icon
- static const IconData error_outline = IconData(0xe0d2, fontFamily: family, fontPackage: package); + static const IconData error_outline = IconData(0xe0d5, fontFamily: family, fontPackage: package); ///
Error icon
- static const IconData error = IconData(0xe0d3, fontFamily: family, fontPackage: package); + static const IconData error = IconData(0xe0d6, fontFamily: family, fontPackage: package); ///
Ethernet icon
- static const IconData ethernet = IconData(0xe0d4, fontFamily: family, fontPackage: package); + static const IconData ethernet = IconData(0xe0d7, fontFamily: family, fontPackage: package); ///
Exit icon
- static const IconData exit = IconData(0xe0d5, fontFamily: family, fontPackage: package); + static const IconData exit = IconData(0xe0d8, fontFamily: family, fontPackage: package); ///
Expand Less icon
- static const IconData expand_less = IconData(0xe0d6, fontFamily: family, fontPackage: package); + static const IconData expand_less = IconData(0xe0d9, fontFamily: family, fontPackage: package); ///
Expand More icon
- static const IconData expand_more = IconData(0xe0d7, fontFamily: family, fontPackage: package); + static const IconData expand_more = IconData(0xe0da, fontFamily: family, fontPackage: package); ///
Eye Dropper icon
- static const IconData eye_dropper = IconData(0xe0d8, fontFamily: family, fontPackage: package); + static const IconData eye_dropper = IconData(0xe0db, fontFamily: family, fontPackage: package); ///
Eye Preview icon
- static const IconData eye_preview = IconData(0xe0d9, fontFamily: family, fontPackage: package); + static const IconData eye_preview = IconData(0xe0dc, fontFamily: family, fontPackage: package); ///
Face Id icon
- static const IconData face_id = IconData(0xe0da, fontFamily: family, fontPackage: package); + static const IconData face_id = IconData(0xe0dd, fontFamily: family, fontPackage: package); ///
Facebook icon
- static const IconData facebook = IconData(0xe0db, fontFamily: family, fontPackage: package); + static const IconData facebook = IconData(0xe0de, fontFamily: family, fontPackage: package); ///
Factory icon
- static const IconData factory = IconData(0xe0dc, fontFamily: family, fontPackage: package); + static const IconData factory = IconData(0xe0df, fontFamily: family, fontPackage: package); ///
Fast Forward icon
- static const IconData fast_forward = IconData(0xe0dd, fontFamily: family, fontPackage: package); + static const IconData fast_forward = IconData(0xe0e0, fontFamily: family, fontPackage: package); ///
Fast Rewind icon
- static const IconData fast_rewind = IconData(0xe0de, fontFamily: family, fontPackage: package); + static const IconData fast_rewind = IconData(0xe0e1, fontFamily: family, fontPackage: package); ///
File icon
- static const IconData file = IconData(0xe0df, fontFamily: family, fontPackage: package); + static const IconData file = IconData(0xe0e2, fontFamily: family, fontPackage: package); ///
Filter Alt icon
- static const IconData filter_alt = IconData(0xe0e0, fontFamily: family, fontPackage: package); + static const IconData filter_alt = IconData(0xe0e3, fontFamily: family, fontPackage: package); ///
Filter icon
- static const IconData filter = IconData(0xe0e1, fontFamily: family, fontPackage: package); + static const IconData filter = IconData(0xe0e4, fontFamily: family, fontPackage: package); ///
Finished Download icon
- static const IconData finished_download = IconData(0xe0e2, fontFamily: family, fontPackage: package); + static const IconData finished_download = IconData(0xe0e5, fontFamily: family, fontPackage: package); ///
First Page icon
- static const IconData first_page = IconData(0xe0e3, fontFamily: family, fontPackage: package); + static const IconData first_page = IconData(0xe0e6, fontFamily: family, fontPackage: package); ///
Flag icon
- static const IconData flag = IconData(0xe0e4, fontFamily: family, fontPackage: package); + static const IconData flag = IconData(0xe0e7, fontFamily: family, fontPackage: package); ///
Flight Mode icon
- static const IconData flight_mode = IconData(0xe0e5, fontFamily: family, fontPackage: package); + static const IconData flight_mode = IconData(0xe0e8, fontFamily: family, fontPackage: package); ///
Flight icon
- static const IconData flight = IconData(0xe0e6, fontFamily: family, fontPackage: package); + static const IconData flight = IconData(0xe0e9, fontFamily: family, fontPackage: package); ///
Flip icon
- static const IconData flip = IconData(0xe0e7, fontFamily: family, fontPackage: package); + static const IconData flip = IconData(0xe0ea, fontFamily: family, fontPackage: package); ///
Folder File icon
- static const IconData folder_file = IconData(0xe0e8, fontFamily: family, fontPackage: package); + static const IconData folder_file = IconData(0xe0eb, fontFamily: family, fontPackage: package); ///
Folder Outline icon
- static const IconData folder_outline = IconData(0xe0e9, fontFamily: family, fontPackage: package); + static const IconData folder_outline = IconData(0xe0ec, fontFamily: family, fontPackage: package); ///
Folder icon
- static const IconData folder = IconData(0xe0ea, fontFamily: family, fontPackage: package); + static const IconData folder = IconData(0xe0ed, fontFamily: family, fontPackage: package); ///
Font Size Decrease icon
- static const IconData font_size_decrease = IconData(0xe0eb, fontFamily: family, fontPackage: package); + static const IconData font_size_decrease = IconData(0xe0ee, fontFamily: family, fontPackage: package); ///
Font Size Increase icon
- static const IconData font_size_increase = IconData(0xe0ec, fontFamily: family, fontPackage: package); + static const IconData font_size_increase = IconData(0xe0ef, fontFamily: family, fontPackage: package); ///
Format Shapes icon
- static const IconData format_shapes = IconData(0xe0ed, fontFamily: family, fontPackage: package); + static const IconData format_shapes = IconData(0xe0f0, fontFamily: family, fontPackage: package); ///
Forward icon
- static const IconData forward = IconData(0xe0ee, fontFamily: family, fontPackage: package); + static const IconData forward = IconData(0xe0f1, fontFamily: family, fontPackage: package); ///
Freezer icon
- static const IconData freezer = IconData(0xe0ef, fontFamily: family, fontPackage: package); + static const IconData freezer = IconData(0xe0f2, fontFamily: family, fontPackage: package); ///
Full Screen Exit icon
- static const IconData full_screen_exit = IconData(0xe0f0, fontFamily: family, fontPackage: package); + static const IconData full_screen_exit = IconData(0xe0f3, fontFamily: family, fontPackage: package); ///
Full Screen icon
- static const IconData full_screen = IconData(0xe0f1, fontFamily: family, fontPackage: package); + static const IconData full_screen = IconData(0xe0f4, fontFamily: family, fontPackage: package); ///
Gif icon
- static const IconData gif = IconData(0xe0f2, fontFamily: family, fontPackage: package); + static const IconData gif = IconData(0xe0f5, fontFamily: family, fontPackage: package); ///
Glossary icon
- static const IconData glossary = IconData(0xe0f3, fontFamily: family, fontPackage: package); + static const IconData glossary = IconData(0xe0f6, fontFamily: family, fontPackage: package); + + ///
Google Drive icon
+ static const IconData google_drive = IconData(0xe0f7, fontFamily: family, fontPackage: package); ///
Grid Off icon
- static const IconData grid_off = IconData(0xe0f4, fontFamily: family, fontPackage: package); + static const IconData grid_off = IconData(0xe0f8, fontFamily: family, fontPackage: package); ///
Grid On icon
- static const IconData grid_on = IconData(0xe0f5, fontFamily: family, fontPackage: package); + static const IconData grid_on = IconData(0xe0f9, fontFamily: family, fontPackage: package); ///
Grid View icon
- static const IconData grid_view = IconData(0xe0f6, fontFamily: family, fontPackage: package); + static const IconData grid_view = IconData(0xe0fa, fontFamily: family, fontPackage: package); ///
Group icon
- static const IconData group = IconData(0xe0f7, fontFamily: family, fontPackage: package); + static const IconData group = IconData(0xe0fb, fontFamily: family, fontPackage: package); ///
Groups icon
- static const IconData groups = IconData(0xe0f8, fontFamily: family, fontPackage: package); + static const IconData groups = IconData(0xe0fc, fontFamily: family, fontPackage: package); ///
Hamburger Menu Navigation Rail icon
- static const IconData hamburger_menu_navigation_rail = IconData(0xe0f9, fontFamily: family, fontPackage: package); + static const IconData hamburger_menu_navigation_rail = IconData(0xe0fd, fontFamily: family, fontPackage: package); ///
Hamburger Menu icon
- static const IconData hamburger_menu = IconData(0xe0fa, fontFamily: family, fontPackage: package); + static const IconData hamburger_menu = IconData(0xe0fe, fontFamily: family, fontPackage: package); ///
Hamburger Menu Thick icon
- static const IconData hamburger_menu_thick = IconData(0xe0fb, fontFamily: family, fontPackage: package); + static const IconData hamburger_menu_thick = IconData(0xe0ff, fontFamily: family, fontPackage: package); ///
Hand icon
- static const IconData hand = IconData(0xe0fc, fontFamily: family, fontPackage: package); + static const IconData hand = IconData(0xe100, fontFamily: family, fontPackage: package); ///
Happy icon
- static const IconData happy = IconData(0xe0fd, fontFamily: family, fontPackage: package); + static const IconData happy = IconData(0xe101, fontFamily: family, fontPackage: package); ///
Hdmi icon
- static const IconData hdmi = IconData(0xe0fe, fontFamily: family, fontPackage: package); + static const IconData hdmi = IconData(0xe102, fontFamily: family, fontPackage: package); ///
Hdr icon
- static const IconData hdr = IconData(0xe0ff, fontFamily: family, fontPackage: package); + static const IconData hdr = IconData(0xe103, fontFamily: family, fontPackage: package); ///
Headphones icon
- static const IconData headphones = IconData(0xe100, fontFamily: family, fontPackage: package); + static const IconData headphones = IconData(0xe104, fontFamily: family, fontPackage: package); ///
Headset icon
- static const IconData headset = IconData(0xe101, fontFamily: family, fontPackage: package); + static const IconData headset = IconData(0xe105, fontFamily: family, fontPackage: package); ///
Help Outline icon
- static const IconData help_outline = IconData(0xe102, fontFamily: family, fontPackage: package); + static const IconData help_outline = IconData(0xe106, fontFamily: family, fontPackage: package); ///
Help icon
- static const IconData help = IconData(0xe103, fontFamily: family, fontPackage: package); + static const IconData help = IconData(0xe107, fontFamily: family, fontPackage: package); ///
History icon
- static const IconData history = IconData(0xe104, fontFamily: family, fontPackage: package); + static const IconData history = IconData(0xe108, fontFamily: family, fontPackage: package); ///
Home icon
- static const IconData home = IconData(0xe105, fontFamily: family, fontPackage: package); + static const IconData home = IconData(0xe109, fontFamily: family, fontPackage: package); ///
Hourglass icon
- static const IconData hourglass = IconData(0xe106, fontFamily: family, fontPackage: package); + static const IconData hourglass = IconData(0xe10a, fontFamily: family, fontPackage: package); ///
How Do I icon
- static const IconData how_do_i = IconData(0xe107, fontFamily: family, fontPackage: package); + static const IconData how_do_i = IconData(0xe10b, fontFamily: family, fontPackage: package); ///
Image Library icon
- static const IconData image_library = IconData(0xe108, fontFamily: family, fontPackage: package); + static const IconData image_library = IconData(0xe10c, fontFamily: family, fontPackage: package); ///
Image icon
- static const IconData image = IconData(0xe109, fontFamily: family, fontPackage: package); + static const IconData image = IconData(0xe10d, fontFamily: family, fontPackage: package); ///
Important Notification icon
- static const IconData important_notification = IconData(0xe10a, fontFamily: family, fontPackage: package); + static const IconData important_notification = IconData(0xe10e, fontFamily: family, fontPackage: package); ///
Inbox icon
- static const IconData inbox = IconData(0xe10b, fontFamily: family, fontPackage: package); + static const IconData inbox = IconData(0xe10f, fontFamily: family, fontPackage: package); ///
Indent Decrease icon
- static const IconData indent_decrease = IconData(0xe10c, fontFamily: family, fontPackage: package); + static const IconData indent_decrease = IconData(0xe110, fontFamily: family, fontPackage: package); ///
Indent Increase icon
- static const IconData indent_increase = IconData(0xe10d, fontFamily: family, fontPackage: package); + static const IconData indent_increase = IconData(0xe111, fontFamily: family, fontPackage: package); ///
Indeterminate Check Box icon
- static const IconData indeterminate_check_box = IconData(0xe10e, fontFamily: family, fontPackage: package); + static const IconData indeterminate_check_box = IconData(0xe112, fontFamily: family, fontPackage: package); ///
Info icon
- static const IconData info = IconData(0xe10f, fontFamily: family, fontPackage: package); + static const IconData info = IconData(0xe113, fontFamily: family, fontPackage: package); ///
Instagram icon
- static const IconData instagram = IconData(0xe110, fontFamily: family, fontPackage: package); + static const IconData instagram = IconData(0xe114, fontFamily: family, fontPackage: package); ///
Ios Share icon
- static const IconData ios_share = IconData(0xe111, fontFamily: family, fontPackage: package); + static const IconData ios_share = IconData(0xe115, fontFamily: family, fontPackage: package); ///
Iso icon
- static const IconData iso = IconData(0xe112, fontFamily: family, fontPackage: package); + static const IconData iso = IconData(0xe116, fontFamily: family, fontPackage: package); ///
Issue Audit icon
- static const IconData issue_audit = IconData(0xe113, fontFamily: family, fontPackage: package); + static const IconData issue_audit = IconData(0xe117, fontFamily: family, fontPackage: package); ///
Italic icon
- static const IconData italic = IconData(0xe114, fontFamily: family, fontPackage: package); + static const IconData italic = IconData(0xe118, fontFamily: family, fontPackage: package); ///
Jpg Attach icon
- static const IconData jpg_attach = IconData(0xe115, fontFamily: family, fontPackage: package); + static const IconData jpg_attach = IconData(0xe119, fontFamily: family, fontPackage: package); ///
Justify icon
- static const IconData justify = IconData(0xe116, fontFamily: family, fontPackage: package); + static const IconData justify = IconData(0xe11a, fontFamily: family, fontPackage: package); ///
Keyboard icon
- static const IconData keyboard = IconData(0xe117, fontFamily: family, fontPackage: package); + static const IconData keyboard = IconData(0xe11b, fontFamily: family, fontPackage: package); ///
Label icon
- static const IconData label = IconData(0xe118, fontFamily: family, fontPackage: package); + static const IconData label = IconData(0xe11c, fontFamily: family, fontPackage: package); ///
Laptop icon
- static const IconData laptop = IconData(0xe119, fontFamily: family, fontPackage: package); + static const IconData laptop = IconData(0xe11d, fontFamily: family, fontPackage: package); ///
Last Page icon
- static const IconData last_page = IconData(0xe11a, fontFamily: family, fontPackage: package); + static const IconData last_page = IconData(0xe11e, fontFamily: family, fontPackage: package); ///
Layers icon
- static const IconData layers = IconData(0xe11b, fontFamily: family, fontPackage: package); + static const IconData layers = IconData(0xe11f, fontFamily: family, fontPackage: package); ///
Light Mode icon
- static const IconData light_mode = IconData(0xe11c, fontFamily: family, fontPackage: package); + static const IconData light_mode = IconData(0xe120, fontFamily: family, fontPackage: package); ///
Light Rail Train icon
- static const IconData light_rail_train = IconData(0xe11d, fontFamily: family, fontPackage: package); + static const IconData light_rail_train = IconData(0xe121, fontFamily: family, fontPackage: package); ///
Lightbulb icon
- static const IconData lightbulb = IconData(0xe11e, fontFamily: family, fontPackage: package); + static const IconData lightbulb = IconData(0xe122, fontFamily: family, fontPackage: package); ///
Like icon
- static const IconData like = IconData(0xe11f, fontFamily: family, fontPackage: package); + static const IconData like = IconData(0xe123, fontFamily: family, fontPackage: package); ///
Line Spacing icon
- static const IconData line_spacing = IconData(0xe120, fontFamily: family, fontPackage: package); + static const IconData line_spacing = IconData(0xe124, fontFamily: family, fontPackage: package); ///
Link Add icon
- static const IconData link_add = IconData(0xe121, fontFamily: family, fontPackage: package); + static const IconData link_add = IconData(0xe125, fontFamily: family, fontPackage: package); ///
Link icon
- static const IconData link = IconData(0xe122, fontFamily: family, fontPackage: package); + static const IconData link = IconData(0xe126, fontFamily: family, fontPackage: package); ///
Linkedin icon
- static const IconData linkedin = IconData(0xe123, fontFamily: family, fontPackage: package); + static const IconData linkedin = IconData(0xe127, fontFamily: family, fontPackage: package); ///
List Alt icon
- static const IconData list_alt = IconData(0xe124, fontFamily: family, fontPackage: package); + static const IconData list_alt = IconData(0xe128, fontFamily: family, fontPackage: package); ///
List Bullet Contained icon
- static const IconData list_bullet_contained = IconData(0xe125, fontFamily: family, fontPackage: package); + static const IconData list_bullet_contained = IconData(0xe129, fontFamily: family, fontPackage: package); ///
List Feedback icon
- static const IconData list_feedback = IconData(0xe126, fontFamily: family, fontPackage: package); + static const IconData list_feedback = IconData(0xe12a, fontFamily: family, fontPackage: package); ///
List Form icon
- static const IconData list_form = IconData(0xe127, fontFamily: family, fontPackage: package); + static const IconData list_form = IconData(0xe12b, fontFamily: family, fontPackage: package); ///
List icon
- static const IconData list = IconData(0xe128, fontFamily: family, fontPackage: package); + static const IconData list = IconData(0xe12c, fontFamily: family, fontPackage: package); ///
Local Shipping icon
- static const IconData local_shipping = IconData(0xe129, fontFamily: family, fontPackage: package); + static const IconData local_shipping = IconData(0xe12d, fontFamily: family, fontPackage: package); ///
Location Off icon
- static const IconData location_off = IconData(0xe12a, fontFamily: family, fontPackage: package); + static const IconData location_off = IconData(0xe12e, fontFamily: family, fontPackage: package); ///
Location Point icon
- static const IconData location_point = IconData(0xe12b, fontFamily: family, fontPackage: package); + static const IconData location_point = IconData(0xe12f, fontFamily: family, fontPackage: package); ///
Location icon
- static const IconData location = IconData(0xe12c, fontFamily: family, fontPackage: package); + static const IconData location = IconData(0xe130, fontFamily: family, fontPackage: package); ///
Lock Alt icon
- static const IconData lock_alt = IconData(0xe12d, fontFamily: family, fontPackage: package); + static const IconData lock_alt = IconData(0xe131, fontFamily: family, fontPackage: package); ///
Lock icon
- static const IconData lock = IconData(0xe12e, fontFamily: family, fontPackage: package); + static const IconData lock = IconData(0xe132, fontFamily: family, fontPackage: package); ///
Lock Undo icon
- static const IconData lock_undo = IconData(0xe12f, fontFamily: family, fontPackage: package); + static const IconData lock_undo = IconData(0xe133, fontFamily: family, fontPackage: package); ///
Log In icon
- static const IconData log_in = IconData(0xe130, fontFamily: family, fontPackage: package); + static const IconData log_in = IconData(0xe134, fontFamily: family, fontPackage: package); ///
Log Out icon
- static const IconData log_out = IconData(0xe131, fontFamily: family, fontPackage: package); + static const IconData log_out = IconData(0xe135, fontFamily: family, fontPackage: package); ///
Love Outline icon
- static const IconData love_outline = IconData(0xe132, fontFamily: family, fontPackage: package); + static const IconData love_outline = IconData(0xe136, fontFamily: family, fontPackage: package); ///
Love icon
- static const IconData love = IconData(0xe133, fontFamily: family, fontPackage: package); + static const IconData love = IconData(0xe137, fontFamily: family, fontPackage: package); ///
Maintenance icon
- static const IconData maintenance = IconData(0xe134, fontFamily: family, fontPackage: package); + static const IconData maintenance = IconData(0xe138, fontFamily: family, fontPackage: package); ///
Map icon
- static const IconData map = IconData(0xe135, fontFamily: family, fontPackage: package); + static const IconData map = IconData(0xe139, fontFamily: family, fontPackage: package); ///
Meal icon
- static const IconData meal = IconData(0xe136, fontFamily: family, fontPackage: package); + static const IconData meal = IconData(0xe13a, fontFamily: family, fontPackage: package); ///
Medium icon
- static const IconData medium = IconData(0xe137, fontFamily: family, fontPackage: package); + static const IconData medium = IconData(0xe13b, fontFamily: family, fontPackage: package); ///
Memory icon
- static const IconData memory = IconData(0xe138, fontFamily: family, fontPackage: package); + static const IconData memory = IconData(0xe13c, fontFamily: family, fontPackage: package); ///
Message icon
- static const IconData message = IconData(0xe139, fontFamily: family, fontPackage: package); + static const IconData message = IconData(0xe13d, fontFamily: family, fontPackage: package); ///
Microphone Off icon
- static const IconData microphone_off = IconData(0xe13a, fontFamily: family, fontPackage: package); + static const IconData microphone_off = IconData(0xe13e, fontFamily: family, fontPackage: package); ///
Microphone Outline icon
- static const IconData microphone_outline = IconData(0xe13b, fontFamily: family, fontPackage: package); + static const IconData microphone_outline = IconData(0xe13f, fontFamily: family, fontPackage: package); ///
Microphone icon
- static const IconData microphone = IconData(0xe13c, fontFamily: family, fontPackage: package); + static const IconData microphone = IconData(0xe140, fontFamily: family, fontPackage: package); ///
Mobile Friendly icon
- static const IconData mobile_friendly = IconData(0xe13d, fontFamily: family, fontPackage: package); + static const IconData mobile_friendly = IconData(0xe141, fontFamily: family, fontPackage: package); ///
Money Euro icon
- static const IconData money_euro = IconData(0xe13e, fontFamily: family, fontPackage: package); + static const IconData money_euro = IconData(0xe142, fontFamily: family, fontPackage: package); ///
Money Pound icon
- static const IconData money_pound = IconData(0xe13f, fontFamily: family, fontPackage: package); + static const IconData money_pound = IconData(0xe143, fontFamily: family, fontPackage: package); ///
Money Usd icon
- static const IconData money_usd = IconData(0xe140, fontFamily: family, fontPackage: package); + static const IconData money_usd = IconData(0xe144, fontFamily: family, fontPackage: package); ///
Monitor icon
- static const IconData monitor = IconData(0xe141, fontFamily: family, fontPackage: package); + static const IconData monitor = IconData(0xe145, fontFamily: family, fontPackage: package); ///
More Horizontal icon
- static const IconData more_horizontal = IconData(0xe142, fontFamily: family, fontPackage: package); + static const IconData more_horizontal = IconData(0xe146, fontFamily: family, fontPackage: package); ///
More Vertical icon
- static const IconData more_vertical = IconData(0xe143, fontFamily: family, fontPackage: package); + static const IconData more_vertical = IconData(0xe147, fontFamily: family, fontPackage: package); ///
My Location icon
- static const IconData my_location = IconData(0xe144, fontFamily: family, fontPackage: package); + static const IconData my_location = IconData(0xe148, fontFamily: family, fontPackage: package); ///
Navigate icon
- static const IconData navigate = IconData(0xe145, fontFamily: family, fontPackage: package); + static const IconData navigate = IconData(0xe149, fontFamily: family, fontPackage: package); ///
Navigation icon
- static const IconData navigation = IconData(0xe146, fontFamily: family, fontPackage: package); + static const IconData navigation = IconData(0xe14a, fontFamily: family, fontPackage: package); ///
Near Me icon
- static const IconData near_me = IconData(0xe147, fontFamily: family, fontPackage: package); + static const IconData near_me = IconData(0xe14b, fontFamily: family, fontPackage: package); ///
Network Signal icon
- static const IconData network_signal = IconData(0xe148, fontFamily: family, fontPackage: package); + static const IconData network_signal = IconData(0xe14c, fontFamily: family, fontPackage: package); ///
New Chat icon
- static const IconData new_chat = IconData(0xe149, fontFamily: family, fontPackage: package); + static const IconData new_chat = IconData(0xe14d, fontFamily: family, fontPackage: package); ///
Nfc icon
- static const IconData nfc = IconData(0xe14a, fontFamily: family, fontPackage: package); + static const IconData nfc = IconData(0xe14e, fontFamily: family, fontPackage: package); ///
Night icon
- static const IconData night = IconData(0xe14b, fontFamily: family, fontPackage: package); + static const IconData night = IconData(0xe14f, fontFamily: family, fontPackage: package); ///
No Color icon
- static const IconData no_color = IconData(0xe14c, fontFamily: family, fontPackage: package); + static const IconData no_color = IconData(0xe150, fontFamily: family, fontPackage: package); ///
Note icon
- static const IconData note = IconData(0xe14d, fontFamily: family, fontPackage: package); + static const IconData note = IconData(0xe151, fontFamily: family, fontPackage: package); ///
Notifications Off icon
- static const IconData notifications_off = IconData(0xe14e, fontFamily: family, fontPackage: package); + static const IconData notifications_off = IconData(0xe152, fontFamily: family, fontPackage: package); ///
Numbered List icon
- static const IconData numbered_list = IconData(0xe14f, fontFamily: family, fontPackage: package); + static const IconData numbered_list = IconData(0xe153, fontFamily: family, fontPackage: package); ///
Open In Full icon
- static const IconData open_in_full = IconData(0xe150, fontFamily: family, fontPackage: package); + static const IconData open_in_full = IconData(0xe154, fontFamily: family, fontPackage: package); ///
Open In New Window icon
- static const IconData open_in_new_window = IconData(0xe151, fontFamily: family, fontPackage: package); + static const IconData open_in_new_window = IconData(0xe155, fontFamily: family, fontPackage: package); ///
Open New Off icon
- static const IconData open_new_off = IconData(0xe152, fontFamily: family, fontPackage: package); + static const IconData open_new_off = IconData(0xe156, fontFamily: family, fontPackage: package); ///
Page Height icon
- static const IconData page_height = IconData(0xe153, fontFamily: family, fontPackage: package); + static const IconData page_height = IconData(0xe157, fontFamily: family, fontPackage: package); ///
Page Rotate icon
- static const IconData page_rotate = IconData(0xe154, fontFamily: family, fontPackage: package); + static const IconData page_rotate = IconData(0xe158, fontFamily: family, fontPackage: package); ///
Page Width icon
- static const IconData page_width = IconData(0xe155, fontFamily: family, fontPackage: package); + static const IconData page_width = IconData(0xe159, fontFamily: family, fontPackage: package); ///
Palette icon
- static const IconData palette = IconData(0xe156, fontFamily: family, fontPackage: package); + static const IconData palette = IconData(0xe15a, fontFamily: family, fontPackage: package); ///
Partner icon
- static const IconData partner = IconData(0xe157, fontFamily: family, fontPackage: package); + static const IconData partner = IconData(0xe15b, fontFamily: family, fontPackage: package); ///
Pause Circle icon
- static const IconData pause_circle = IconData(0xe158, fontFamily: family, fontPackage: package); + static const IconData pause_circle = IconData(0xe15c, fontFamily: family, fontPackage: package); ///
Pause icon
- static const IconData pause = IconData(0xe159, fontFamily: family, fontPackage: package); + static const IconData pause = IconData(0xe15d, fontFamily: family, fontPackage: package); ///
Pdf Attach icon
- static const IconData pdf_attach = IconData(0xe15a, fontFamily: family, fontPackage: package); + static const IconData pdf_attach = IconData(0xe15e, fontFamily: family, fontPackage: package); ///
Pending icon
- static const IconData pending = IconData(0xe15b, fontFamily: family, fontPackage: package); + static const IconData pending = IconData(0xe15f, fontFamily: family, fontPackage: package); ///
Person Admin icon
- static const IconData person_admin = IconData(0xe15c, fontFamily: family, fontPackage: package); + static const IconData person_admin = IconData(0xe160, fontFamily: family, fontPackage: package); ///
Person Assign icon
- static const IconData person_assign = IconData(0xe15d, fontFamily: family, fontPackage: package); + static const IconData person_assign = IconData(0xe161, fontFamily: family, fontPackage: package); ///
Person Clock icon
- static const IconData person_clock = IconData(0xe15e, fontFamily: family, fontPackage: package); + static const IconData person_clock = IconData(0xe162, fontFamily: family, fontPackage: package); ///
Person Info icon
- static const IconData person_info = IconData(0xe15f, fontFamily: family, fontPackage: package); + static const IconData person_info = IconData(0xe163, fontFamily: family, fontPackage: package); ///
Person Manager icon
- static const IconData person_manager = IconData(0xe160, fontFamily: family, fontPackage: package); + static const IconData person_manager = IconData(0xe164, fontFamily: family, fontPackage: package); ///
Person Move icon
- static const IconData person_move = IconData(0xe161, fontFamily: family, fontPackage: package); + static const IconData person_move = IconData(0xe165, fontFamily: family, fontPackage: package); ///
Person Outline icon
- static const IconData person_outline = IconData(0xe162, fontFamily: family, fontPackage: package); + static const IconData person_outline = IconData(0xe166, fontFamily: family, fontPackage: package); ///
Person icon
- static const IconData person = IconData(0xe163, fontFamily: family, fontPackage: package); + static const IconData person = IconData(0xe167, fontFamily: family, fontPackage: package); ///
Person Search icon
- static const IconData person_search = IconData(0xe164, fontFamily: family, fontPackage: package); + static const IconData person_search = IconData(0xe168, fontFamily: family, fontPackage: package); ///
Person Swap icon
- static const IconData person_swap = IconData(0xe165, fontFamily: family, fontPackage: package); + static const IconData person_swap = IconData(0xe169, fontFamily: family, fontPackage: package); ///
Person Walk icon
- static const IconData person_walk = IconData(0xe166, fontFamily: family, fontPackage: package); + static const IconData person_walk = IconData(0xe16a, fontFamily: family, fontPackage: package); ///
Phone Android icon
- static const IconData phone_android = IconData(0xe167, fontFamily: family, fontPackage: package); + static const IconData phone_android = IconData(0xe16b, fontFamily: family, fontPackage: package); ///
Phone Bluetooth Speaker icon
- static const IconData phone_bluetooth_speaker = IconData(0xe168, fontFamily: family, fontPackage: package); + static const IconData phone_bluetooth_speaker = IconData(0xe16c, fontFamily: family, fontPackage: package); ///
Phone In Talk icon
- static const IconData phone_in_talk = IconData(0xe169, fontFamily: family, fontPackage: package); + static const IconData phone_in_talk = IconData(0xe16d, fontFamily: family, fontPackage: package); ///
Phone Iphone icon
- static const IconData phone_iphone = IconData(0xe16a, fontFamily: family, fontPackage: package); + static const IconData phone_iphone = IconData(0xe16e, fontFamily: family, fontPackage: package); ///
Phone icon
- static const IconData phone = IconData(0xe16b, fontFamily: family, fontPackage: package); + static const IconData phone = IconData(0xe16f, fontFamily: family, fontPackage: package); ///
Phonelink icon
- static const IconData phonelink = IconData(0xe16c, fontFamily: family, fontPackage: package); + static const IconData phonelink = IconData(0xe170, fontFamily: family, fontPackage: package); ///
Phrase icon
- static const IconData phrase = IconData(0xe16d, fontFamily: family, fontPackage: package); + static const IconData phrase = IconData(0xe171, fontFamily: family, fontPackage: package); ///
Pin icon
- static const IconData pin = IconData(0xe16e, fontFamily: family, fontPackage: package); + static const IconData pin = IconData(0xe172, fontFamily: family, fontPackage: package); ///
Place icon
- static const IconData place = IconData(0xe16f, fontFamily: family, fontPackage: package); + static const IconData place = IconData(0xe173, fontFamily: family, fontPackage: package); ///
Planogram icon
- static const IconData planogram = IconData(0xe170, fontFamily: family, fontPackage: package); + static const IconData planogram = IconData(0xe174, fontFamily: family, fontPackage: package); ///
Play Circle icon
- static const IconData play_circle = IconData(0xe171, fontFamily: family, fontPackage: package); + static const IconData play_circle = IconData(0xe175, fontFamily: family, fontPackage: package); ///
Play Outline icon
- static const IconData play_outline = IconData(0xe172, fontFamily: family, fontPackage: package); + static const IconData play_outline = IconData(0xe176, fontFamily: family, fontPackage: package); ///
Play icon
- static const IconData play = IconData(0xe173, fontFamily: family, fontPackage: package); + static const IconData play = IconData(0xe177, fontFamily: family, fontPackage: package); ///
Png Attach icon
- static const IconData png_attach = IconData(0xe174, fontFamily: family, fontPackage: package); + static const IconData png_attach = IconData(0xe178, fontFamily: family, fontPackage: package); ///
Point Gift icon
- static const IconData point_gift = IconData(0xe175, fontFamily: family, fontPackage: package); + static const IconData point_gift = IconData(0xe179, fontFamily: family, fontPackage: package); ///
Point Heart icon
- static const IconData point_heart = IconData(0xe176, fontFamily: family, fontPackage: package); + static const IconData point_heart = IconData(0xe17a, fontFamily: family, fontPackage: package); ///
Point Money icon
- static const IconData point_money = IconData(0xe177, fontFamily: family, fontPackage: package); + static const IconData point_money = IconData(0xe17b, fontFamily: family, fontPackage: package); ///
Point Star icon
- static const IconData point_star = IconData(0xe178, fontFamily: family, fontPackage: package); + static const IconData point_star = IconData(0xe17c, fontFamily: family, fontPackage: package); ///
Point Token icon
- static const IconData point_token = IconData(0xe179, fontFamily: family, fontPackage: package); + static const IconData point_token = IconData(0xe17d, fontFamily: family, fontPackage: package); ///
Portrait icon
- static const IconData portrait = IconData(0xe17a, fontFamily: family, fontPackage: package); + static const IconData portrait = IconData(0xe17e, fontFamily: family, fontPackage: package); ///
Ppt Attach icon
- static const IconData ppt_attach = IconData(0xe17b, fontFamily: family, fontPackage: package); + static const IconData ppt_attach = IconData(0xe17f, fontFamily: family, fontPackage: package); ///
Price icon
- static const IconData price = IconData(0xe17c, fontFamily: family, fontPackage: package); + static const IconData price = IconData(0xe180, fontFamily: family, fontPackage: package); ///
Printer icon
- static const IconData printer = IconData(0xe17d, fontFamily: family, fontPackage: package); + static const IconData printer = IconData(0xe181, fontFamily: family, fontPackage: package); ///
Priority icon
- static const IconData priority = IconData(0xe17e, fontFamily: family, fontPackage: package); + static const IconData priority = IconData(0xe182, fontFamily: family, fontPackage: package); ///
Pro icon
- static const IconData pro = IconData(0xe17f, fontFamily: family, fontPackage: package); + static const IconData pro = IconData(0xe183, fontFamily: family, fontPackage: package); ///
Productivity Apps icon
- static const IconData productivity_apps = IconData(0xe180, fontFamily: family, fontPackage: package); + static const IconData productivity_apps = IconData(0xe184, fontFamily: family, fontPackage: package); ///
Ptt icon
- static const IconData ptt = IconData(0xe181, fontFamily: family, fontPackage: package); + static const IconData ptt = IconData(0xe185, fontFamily: family, fontPackage: package); ///
Publish icon
- static const IconData publish = IconData(0xe182, fontFamily: family, fontPackage: package); + static const IconData publish = IconData(0xe186, fontFamily: family, fontPackage: package); + + ///
Push Pin Off icon
+ static const IconData push_pin_off = IconData(0xe187, fontFamily: family, fontPackage: package); ///
Push Pin icon
- static const IconData push_pin = IconData(0xe183, fontFamily: family, fontPackage: package); + static const IconData push_pin = IconData(0xe188, fontFamily: family, fontPackage: package); ///
Qr Code icon
- static const IconData qr_code = IconData(0xe184, fontFamily: family, fontPackage: package); + static const IconData qr_code = IconData(0xe189, fontFamily: family, fontPackage: package); ///
Queue icon
- static const IconData queue = IconData(0xe185, fontFamily: family, fontPackage: package); + static const IconData queue = IconData(0xe18a, fontFamily: family, fontPackage: package); ///
Radio Button Checked icon
- static const IconData radio_button_checked = IconData(0xe186, fontFamily: family, fontPackage: package); + static const IconData radio_button_checked = IconData(0xe18b, fontFamily: family, fontPackage: package); ///
Radio Button Unchecked icon
- static const IconData radio_button_unchecked = IconData(0xe187, fontFamily: family, fontPackage: package); + static const IconData radio_button_unchecked = IconData(0xe18c, fontFamily: family, fontPackage: package); ///
React Add icon
- static const IconData react_add = IconData(0xe188, fontFamily: family, fontPackage: package); + static const IconData react_add = IconData(0xe18d, fontFamily: family, fontPackage: package); ///
React Thumbsup icon
- static const IconData react_thumbsup = IconData(0xe189, fontFamily: family, fontPackage: package); + static const IconData react_thumbsup = IconData(0xe18e, fontFamily: family, fontPackage: package); ///
Recall icon
- static const IconData recall = IconData(0xe18a, fontFamily: family, fontPackage: package); + static const IconData recall = IconData(0xe18f, fontFamily: family, fontPackage: package); ///
Receipt icon
- static const IconData receipt = IconData(0xe18b, fontFamily: family, fontPackage: package); + static const IconData receipt = IconData(0xe190, fontFamily: family, fontPackage: package); ///
Recording icon
- static const IconData recording = IconData(0xe18c, fontFamily: family, fontPackage: package); + static const IconData recording = IconData(0xe191, fontFamily: family, fontPackage: package); ///
Redo icon
- static const IconData redo = IconData(0xe18d, fontFamily: family, fontPackage: package); + static const IconData redo = IconData(0xe192, fontFamily: family, fontPackage: package); ///
Refresh icon
- static const IconData refresh = IconData(0xe18e, fontFamily: family, fontPackage: package); + static const IconData refresh = IconData(0xe193, fontFamily: family, fontPackage: package); ///
Remove Box icon
- static const IconData remove_box = IconData(0xe18f, fontFamily: family, fontPackage: package); + static const IconData remove_box = IconData(0xe194, fontFamily: family, fontPackage: package); ///
Remove Circle Outline icon
- static const IconData remove_circle_outline = IconData(0xe190, fontFamily: family, fontPackage: package); + static const IconData remove_circle_outline = IconData(0xe195, fontFamily: family, fontPackage: package); ///
Remove Circle icon
- static const IconData remove_circle = IconData(0xe191, fontFamily: family, fontPackage: package); + static const IconData remove_circle = IconData(0xe196, fontFamily: family, fontPackage: package); ///
Remove Group icon
- static const IconData remove_group = IconData(0xe192, fontFamily: family, fontPackage: package); + static const IconData remove_group = IconData(0xe197, fontFamily: family, fontPackage: package); ///
Remove Person icon
- static const IconData remove_person = IconData(0xe193, fontFamily: family, fontPackage: package); + static const IconData remove_person = IconData(0xe198, fontFamily: family, fontPackage: package); ///
Remove icon
- static const IconData remove = IconData(0xe194, fontFamily: family, fontPackage: package); + static const IconData remove = IconData(0xe199, fontFamily: family, fontPackage: package); ///
Renew icon
- static const IconData renew = IconData(0xe195, fontFamily: family, fontPackage: package); + static const IconData renew = IconData(0xe19a, fontFamily: family, fontPackage: package); ///
Reorder icon
- static const IconData reorder = IconData(0xe196, fontFamily: family, fontPackage: package); + static const IconData reorder = IconData(0xe19b, fontFamily: family, fontPackage: package); ///
Repeat icon
- static const IconData repeat = IconData(0xe197, fontFamily: family, fontPackage: package); + static const IconData repeat = IconData(0xe19c, fontFamily: family, fontPackage: package); ///
Replay icon
- static const IconData replay = IconData(0xe198, fontFamily: family, fontPackage: package); + static const IconData replay = IconData(0xe19d, fontFamily: family, fontPackage: package); ///
Reply icon
- static const IconData reply = IconData(0xe199, fontFamily: family, fontPackage: package); + static const IconData reply = IconData(0xe19e, fontFamily: family, fontPackage: package); ///
Report icon
- static const IconData report = IconData(0xe19a, fontFamily: family, fontPackage: package); + static const IconData report = IconData(0xe19f, fontFamily: family, fontPackage: package); ///
Restart Alt icon
- static const IconData restart_alt = IconData(0xe19b, fontFamily: family, fontPackage: package); + static const IconData restart_alt = IconData(0xe1a0, fontFamily: family, fontPackage: package); ///
Review icon
- static const IconData review = IconData(0xe19c, fontFamily: family, fontPackage: package); + static const IconData review = IconData(0xe1a1, fontFamily: family, fontPackage: package); ///
Road Map icon
- static const IconData road_map = IconData(0xe19d, fontFamily: family, fontPackage: package); + static const IconData road_map = IconData(0xe1a2, fontFamily: family, fontPackage: package); ///
Rotate Left icon
- static const IconData rotate_left = IconData(0xe19e, fontFamily: family, fontPackage: package); + static const IconData rotate_left = IconData(0xe1a3, fontFamily: family, fontPackage: package); ///
Rotate Right icon
- static const IconData rotate_right = IconData(0xe19f, fontFamily: family, fontPackage: package); + static const IconData rotate_right = IconData(0xe1a4, fontFamily: family, fontPackage: package); ///
Rss Feed icon
- static const IconData rss_feed = IconData(0xe1a0, fontFamily: family, fontPackage: package); + static const IconData rss_feed = IconData(0xe1a5, fontFamily: family, fontPackage: package); ///
Rules icon
- static const IconData rules = IconData(0xe1a1, fontFamily: family, fontPackage: package); + static const IconData rules = IconData(0xe1a6, fontFamily: family, fontPackage: package); ///
Sad icon
- static const IconData sad = IconData(0xe1a2, fontFamily: family, fontPackage: package); + static const IconData sad = IconData(0xe1a7, fontFamily: family, fontPackage: package); ///
Satisfied icon
- static const IconData satisfied = IconData(0xe1a3, fontFamily: family, fontPackage: package); + static const IconData satisfied = IconData(0xe1a8, fontFamily: family, fontPackage: package); ///
Save Alt icon
- static const IconData save_alt = IconData(0xe1a4, fontFamily: family, fontPackage: package); + static const IconData save_alt = IconData(0xe1a9, fontFamily: family, fontPackage: package); ///
Save Content icon
- static const IconData save_content = IconData(0xe1a5, fontFamily: family, fontPackage: package); + static const IconData save_content = IconData(0xe1aa, fontFamily: family, fontPackage: package); ///
Save icon
- static const IconData save = IconData(0xe1a6, fontFamily: family, fontPackage: package); + static const IconData save = IconData(0xe1ab, fontFamily: family, fontPackage: package); ///
Scan Rate icon
- static const IconData scan_rate = IconData(0xe1a7, fontFamily: family, fontPackage: package); + static const IconData scan_rate = IconData(0xe1ac, fontFamily: family, fontPackage: package); ///
Scanner icon
- static const IconData scanner = IconData(0xe1a8, fontFamily: family, fontPackage: package); + static const IconData scanner = IconData(0xe1ad, fontFamily: family, fontPackage: package); ///
Schedule icon
- static const IconData schedule = IconData(0xe1a9, fontFamily: family, fontPackage: package); + static const IconData schedule = IconData(0xe1ae, fontFamily: family, fontPackage: package); ///
School icon
- static const IconData school = IconData(0xe1aa, fontFamily: family, fontPackage: package); + static const IconData school = IconData(0xe1af, fontFamily: family, fontPackage: package); ///
Screen Rotation icon
- static const IconData screen_rotation = IconData(0xe1ab, fontFamily: family, fontPackage: package); + static const IconData screen_rotation = IconData(0xe1b0, fontFamily: family, fontPackage: package); ///
Sd Card icon
- static const IconData sd_card = IconData(0xe1ac, fontFamily: family, fontPackage: package); + static const IconData sd_card = IconData(0xe1b1, fontFamily: family, fontPackage: package); ///
Search icon
- static const IconData search = IconData(0xe1ad, fontFamily: family, fontPackage: package); + static const IconData search = IconData(0xe1b2, fontFamily: family, fontPackage: package); ///
Security Check icon
- static const IconData security_check = IconData(0xe1ae, fontFamily: family, fontPackage: package); + static const IconData security_check = IconData(0xe1b3, fontFamily: family, fontPackage: package); ///
Security icon
- static const IconData security = IconData(0xe1af, fontFamily: family, fontPackage: package); + static const IconData security = IconData(0xe1b4, fontFamily: family, fontPackage: package); ///
Send icon
- static const IconData send = IconData(0xe1b0, fontFamily: family, fontPackage: package); + static const IconData send = IconData(0xe1b5, fontFamily: family, fontPackage: package); ///
Settings icon
- static const IconData settings = IconData(0xe1b1, fontFamily: family, fontPackage: package); + static const IconData settings = IconData(0xe1b6, fontFamily: family, fontPackage: package); ///
Shape Recognition icon
- static const IconData shape_recognition = IconData(0xe1b2, fontFamily: family, fontPackage: package); + static const IconData shape_recognition = IconData(0xe1b7, fontFamily: family, fontPackage: package); ///
Share icon
- static const IconData share = IconData(0xe1b3, fontFamily: family, fontPackage: package); + static const IconData share = IconData(0xe1b8, fontFamily: family, fontPackage: package); ///
Shared Folder icon
- static const IconData shared_folder = IconData(0xe1b4, fontFamily: family, fontPackage: package); + static const IconData shared_folder = IconData(0xe1b9, fontFamily: family, fontPackage: package); ///
Ship icon
- static const IconData ship = IconData(0xe1b5, fontFamily: family, fontPackage: package); + static const IconData ship = IconData(0xe1ba, fontFamily: family, fontPackage: package); ///
Sim Card icon
- static const IconData sim_card = IconData(0xe1b6, fontFamily: family, fontPackage: package); + static const IconData sim_card = IconData(0xe1bb, fontFamily: family, fontPackage: package); ///
Skip Next icon
- static const IconData skip_next = IconData(0xe1b7, fontFamily: family, fontPackage: package); + static const IconData skip_next = IconData(0xe1bc, fontFamily: family, fontPackage: package); ///
Skip Previous icon
- static const IconData skip_previous = IconData(0xe1b8, fontFamily: family, fontPackage: package); + static const IconData skip_previous = IconData(0xe1bd, fontFamily: family, fontPackage: package); ///
Slide Show icon
- static const IconData slide_show = IconData(0xe1b9, fontFamily: family, fontPackage: package); + static const IconData slide_show = IconData(0xe1be, fontFamily: family, fontPackage: package); ///
Smart Phone icon
- static const IconData smart_phone = IconData(0xe1ba, fontFamily: family, fontPackage: package); + static const IconData smart_phone = IconData(0xe1bf, fontFamily: family, fontPackage: package); ///
Sms icon
- static const IconData sms = IconData(0xe1bb, fontFamily: family, fontPackage: package); + static const IconData sms = IconData(0xe1c0, fontFamily: family, fontPackage: package); ///
Snooze icon
- static const IconData snooze = IconData(0xe1bc, fontFamily: family, fontPackage: package); + static const IconData snooze = IconData(0xe1c1, fontFamily: family, fontPackage: package); ///
Solutions icon
- static const IconData solutions = IconData(0xe1bd, fontFamily: family, fontPackage: package); + static const IconData solutions = IconData(0xe1c2, fontFamily: family, fontPackage: package); ///
Sort Content icon
- static const IconData sort_content = IconData(0xe1be, fontFamily: family, fontPackage: package); + static const IconData sort_content = IconData(0xe1c3, fontFamily: family, fontPackage: package); ///
Sort icon
- static const IconData sort = IconData(0xe1bf, fontFamily: family, fontPackage: package); + static const IconData sort = IconData(0xe1c4, fontFamily: family, fontPackage: package); ///
Speaker icon
- static const IconData speaker = IconData(0xe1c0, fontFamily: family, fontPackage: package); + static const IconData speaker = IconData(0xe1c5, fontFamily: family, fontPackage: package); ///
Star Half icon
- static const IconData star_half = IconData(0xe1c1, fontFamily: family, fontPackage: package); + static const IconData star_half = IconData(0xe1c6, fontFamily: family, fontPackage: package); ///
Star Outline icon
- static const IconData star_outline = IconData(0xe1c2, fontFamily: family, fontPackage: package); + static const IconData star_outline = IconData(0xe1c7, fontFamily: family, fontPackage: package); ///
Star icon
- static const IconData star = IconData(0xe1c3, fontFamily: family, fontPackage: package); + static const IconData star = IconData(0xe1c8, fontFamily: family, fontPackage: package); ///
Steps icon
- static const IconData steps = IconData(0xe1c4, fontFamily: family, fontPackage: package); + static const IconData steps = IconData(0xe1c9, fontFamily: family, fontPackage: package); ///
Sticker icon
- static const IconData sticker = IconData(0xe1c5, fontFamily: family, fontPackage: package); + static const IconData sticker = IconData(0xe1ca, fontFamily: family, fontPackage: package); ///
Stop Circle icon
- static const IconData stop_circle = IconData(0xe1c6, fontFamily: family, fontPackage: package); + static const IconData stop_circle = IconData(0xe1cb, fontFamily: family, fontPackage: package); ///
Stop icon
- static const IconData stop = IconData(0xe1c7, fontFamily: family, fontPackage: package); + static const IconData stop = IconData(0xe1cc, fontFamily: family, fontPackage: package); ///
Store Release icon
- static const IconData store_release = IconData(0xe1c8, fontFamily: family, fontPackage: package); + static const IconData store_release = IconData(0xe1cd, fontFamily: family, fontPackage: package); ///
Store icon
- static const IconData store = IconData(0xe1c9, fontFamily: family, fontPackage: package); + static const IconData store = IconData(0xe1ce, fontFamily: family, fontPackage: package); ///
Store Swap icon
- static const IconData store_swap = IconData(0xe1ca, fontFamily: family, fontPackage: package); + static const IconData store_swap = IconData(0xe1cf, fontFamily: family, fontPackage: package); ///
Store Transfer icon
- static const IconData store_transfer = IconData(0xe1cb, fontFamily: family, fontPackage: package); + static const IconData store_transfer = IconData(0xe1d0, fontFamily: family, fontPackage: package); ///
Straighten icon
- static const IconData straighten = IconData(0xe1cc, fontFamily: family, fontPackage: package); + static const IconData straighten = IconData(0xe1d1, fontFamily: family, fontPackage: package); ///
Strategy icon
- static const IconData strategy = IconData(0xe1cd, fontFamily: family, fontPackage: package); + static const IconData strategy = IconData(0xe1d2, fontFamily: family, fontPackage: package); ///
Strikethrough icon
- static const IconData strikethrough = IconData(0xe1ce, fontFamily: family, fontPackage: package); + static const IconData strikethrough = IconData(0xe1d3, fontFamily: family, fontPackage: package); ///
Subscribe icon
- static const IconData subscribe = IconData(0xe1cf, fontFamily: family, fontPackage: package); + static const IconData subscribe = IconData(0xe1d4, fontFamily: family, fontPackage: package); ///
Swap icon
- static const IconData swap = IconData(0xe1d0, fontFamily: family, fontPackage: package); + static const IconData swap = IconData(0xe1d5, fontFamily: family, fontPackage: package); ///
Switch User icon
- static const IconData switch_user = IconData(0xe1d1, fontFamily: family, fontPackage: package); + static const IconData switch_user = IconData(0xe1d6, fontFamily: family, fontPackage: package); ///
Sync Action icon
- static const IconData sync_action = IconData(0xe1d2, fontFamily: family, fontPackage: package); + static const IconData sync_action = IconData(0xe1d7, fontFamily: family, fontPackage: package); ///
Sync Disabled icon
- static const IconData sync_disabled = IconData(0xe1d3, fontFamily: family, fontPackage: package); + static const IconData sync_disabled = IconData(0xe1d8, fontFamily: family, fontPackage: package); ///
Sync icon
- static const IconData sync = IconData(0xe1d4, fontFamily: family, fontPackage: package); + static const IconData sync = IconData(0xe1d9, fontFamily: family, fontPackage: package); ///
Table icon
- static const IconData table = IconData(0xe1d5, fontFamily: family, fontPackage: package); + static const IconData table = IconData(0xe1da, fontFamily: family, fontPackage: package); ///
Tablet Mac icon
- static const IconData tablet_mac = IconData(0xe1d6, fontFamily: family, fontPackage: package); + static const IconData tablet_mac = IconData(0xe1db, fontFamily: family, fontPackage: package); ///
Tablet icon
- static const IconData tablet = IconData(0xe1d7, fontFamily: family, fontPackage: package); + static const IconData tablet = IconData(0xe1dc, fontFamily: family, fontPackage: package); ///
Tag Enterprise icon
- static const IconData tag_enterprise = IconData(0xe1d8, fontFamily: family, fontPackage: package); + static const IconData tag_enterprise = IconData(0xe1dd, fontFamily: family, fontPackage: package); ///
Tag icon
- static const IconData tag = IconData(0xe1d9, fontFamily: family, fontPackage: package); + static const IconData tag = IconData(0xe1de, fontFamily: family, fontPackage: package); ///
Tap To Pay icon
- static const IconData tap_to_pay = IconData(0xe1da, fontFamily: family, fontPackage: package); + static const IconData tap_to_pay = IconData(0xe1df, fontFamily: family, fontPackage: package); ///
Taxi icon
- static const IconData taxi = IconData(0xe1db, fontFamily: family, fontPackage: package); + static const IconData taxi = IconData(0xe1e0, fontFamily: family, fontPackage: package); ///
Text Color icon
- static const IconData text_color = IconData(0xe1dc, fontFamily: family, fontPackage: package); + static const IconData text_color = IconData(0xe1e1, fontFamily: family, fontPackage: package); ///
Tiers icon
- static const IconData tiers = IconData(0xe1dd, fontFamily: family, fontPackage: package); + static const IconData tiers = IconData(0xe1e2, fontFamily: family, fontPackage: package); ///
Timecard Approve icon
- static const IconData timecard_approve = IconData(0xe1de, fontFamily: family, fontPackage: package); + static const IconData timecard_approve = IconData(0xe1e3, fontFamily: family, fontPackage: package); ///
Timecard icon
- static const IconData timecard = IconData(0xe1df, fontFamily: family, fontPackage: package); + static const IconData timecard = IconData(0xe1e4, fontFamily: family, fontPackage: package); ///
Timecard Warning icon
- static const IconData timecard_warning = IconData(0xe1e0, fontFamily: family, fontPackage: package); + static const IconData timecard_warning = IconData(0xe1e5, fontFamily: family, fontPackage: package); ///
Timer icon
- static const IconData timer = IconData(0xe1e1, fontFamily: family, fontPackage: package); + static const IconData timer = IconData(0xe1e6, fontFamily: family, fontPackage: package); ///
Toggle Off icon
- static const IconData toggle_off = IconData(0xe1e2, fontFamily: family, fontPackage: package); + static const IconData toggle_off = IconData(0xe1e7, fontFamily: family, fontPackage: package); ///
Toggle On icon
- static const IconData toggle_on = IconData(0xe1e3, fontFamily: family, fontPackage: package); + static const IconData toggle_on = IconData(0xe1e8, fontFamily: family, fontPackage: package); ///
Touch icon
- static const IconData touch = IconData(0xe1e4, fontFamily: family, fontPackage: package); + static const IconData touch = IconData(0xe1e9, fontFamily: family, fontPackage: package); ///
Train icon
- static const IconData train = IconData(0xe1e5, fontFamily: family, fontPackage: package); + static const IconData train = IconData(0xe1ea, fontFamily: family, fontPackage: package); ///
Transfer icon
- static const IconData transfer = IconData(0xe1e6, fontFamily: family, fontPackage: package); + static const IconData transfer = IconData(0xe1eb, fontFamily: family, fontPackage: package); ///
Trending Down icon
- static const IconData trending_down = IconData(0xe1e7, fontFamily: family, fontPackage: package); + static const IconData trending_down = IconData(0xe1ec, fontFamily: family, fontPackage: package); ///
Trending Up icon
- static const IconData trending_up = IconData(0xe1e8, fontFamily: family, fontPackage: package); + static const IconData trending_up = IconData(0xe1ed, fontFamily: family, fontPackage: package); ///
Tv icon
- static const IconData tv = IconData(0xe1e9, fontFamily: family, fontPackage: package); + static const IconData tv = IconData(0xe1ee, fontFamily: family, fontPackage: package); ///
Twitter icon
- static const IconData twitter = IconData(0xe1ea, fontFamily: family, fontPackage: package); + static const IconData twitter = IconData(0xe1ef, fontFamily: family, fontPackage: package); ///
Type icon
- static const IconData type = IconData(0xe1eb, fontFamily: family, fontPackage: package); + static const IconData type = IconData(0xe1f0, fontFamily: family, fontPackage: package); ///
Uhf Rfid icon
- static const IconData uhf_rfid = IconData(0xe1ec, fontFamily: family, fontPackage: package); + static const IconData uhf_rfid = IconData(0xe1f1, fontFamily: family, fontPackage: package); ///
Underline icon
- static const IconData underline = IconData(0xe1ed, fontFamily: family, fontPackage: package); + static const IconData underline = IconData(0xe1f2, fontFamily: family, fontPackage: package); ///
Undo icon
- static const IconData undo = IconData(0xe1ee, fontFamily: family, fontPackage: package); + static const IconData undo = IconData(0xe1f3, fontFamily: family, fontPackage: package); ///
Unfold Less icon
- static const IconData unfold_less = IconData(0xe1ef, fontFamily: family, fontPackage: package); + static const IconData unfold_less = IconData(0xe1f4, fontFamily: family, fontPackage: package); ///
Unfold More icon
- static const IconData unfold_more = IconData(0xe1f0, fontFamily: family, fontPackage: package); + static const IconData unfold_more = IconData(0xe1f5, fontFamily: family, fontPackage: package); ///
Unlock Alt icon
- static const IconData unlock_alt = IconData(0xe1f1, fontFamily: family, fontPackage: package); + static const IconData unlock_alt = IconData(0xe1f6, fontFamily: family, fontPackage: package); ///
Unlock icon
- static const IconData unlock = IconData(0xe1f2, fontFamily: family, fontPackage: package); + static const IconData unlock = IconData(0xe1f7, fontFamily: family, fontPackage: package); ///
Unsubscribe icon
- static const IconData unsubscribe = IconData(0xe1f3, fontFamily: family, fontPackage: package); + static const IconData unsubscribe = IconData(0xe1f8, fontFamily: family, fontPackage: package); ///
Update icon
- static const IconData update = IconData(0xe1f4, fontFamily: family, fontPackage: package); + static const IconData update = IconData(0xe1f9, fontFamily: family, fontPackage: package); ///
Upload File icon
- static const IconData upload_file = IconData(0xe1f5, fontFamily: family, fontPackage: package); + static const IconData upload_file = IconData(0xe1fa, fontFamily: family, fontPackage: package); ///
Upload icon
- static const IconData upload = IconData(0xe1f6, fontFamily: family, fontPackage: package); + static const IconData upload = IconData(0xe1fb, fontFamily: family, fontPackage: package); ///
Usb Alt Device icon
- static const IconData usb_alt_device = IconData(0xe1f7, fontFamily: family, fontPackage: package); + static const IconData usb_alt_device = IconData(0xe1fc, fontFamily: family, fontPackage: package); ///
Usb Alt icon
- static const IconData usb_alt = IconData(0xe1f8, fontFamily: family, fontPackage: package); + static const IconData usb_alt = IconData(0xe1fd, fontFamily: family, fontPackage: package); ///
Usb icon
- static const IconData usb = IconData(0xe1f9, fontFamily: family, fontPackage: package); + static const IconData usb = IconData(0xe1fe, fontFamily: family, fontPackage: package); ///
User Circle icon
- static const IconData user_circle = IconData(0xe1fa, fontFamily: family, fontPackage: package); + static const IconData user_circle = IconData(0xe1ff, fontFamily: family, fontPackage: package); ///
User Minor icon
- static const IconData user_minor = IconData(0xe1fb, fontFamily: family, fontPackage: package); + static const IconData user_minor = IconData(0xe200, fontFamily: family, fontPackage: package); ///
User icon
- static const IconData user = IconData(0xe1fc, fontFamily: family, fontPackage: package); + static const IconData user = IconData(0xe201, fontFamily: family, fontPackage: package); ///
User Settings icon
- static const IconData user_settings = IconData(0xe1fd, fontFamily: family, fontPackage: package); + static const IconData user_settings = IconData(0xe202, fontFamily: family, fontPackage: package); ///
Vacation icon
- static const IconData vacation = IconData(0xe1fe, fontFamily: family, fontPackage: package); + static const IconData vacation = IconData(0xe203, fontFamily: family, fontPackage: package); ///
Verified icon
- static const IconData verified = IconData(0xe1ff, fontFamily: family, fontPackage: package); + static const IconData verified = IconData(0xe204, fontFamily: family, fontPackage: package); ///
Very Satisfied icon
- static const IconData very_satisfied = IconData(0xe200, fontFamily: family, fontPackage: package); + static const IconData very_satisfied = IconData(0xe205, fontFamily: family, fontPackage: package); ///
Video Camera icon
- static const IconData video_camera = IconData(0xe201, fontFamily: family, fontPackage: package); + static const IconData video_camera = IconData(0xe206, fontFamily: family, fontPackage: package); ///
Video Off icon
- static const IconData video_off = IconData(0xe202, fontFamily: family, fontPackage: package); + static const IconData video_off = IconData(0xe207, fontFamily: family, fontPackage: package); ///
Video Play icon
- static const IconData video_play = IconData(0xe203, fontFamily: family, fontPackage: package); + static const IconData video_play = IconData(0xe208, fontFamily: family, fontPackage: package); ///
Video icon
- static const IconData video = IconData(0xe204, fontFamily: family, fontPackage: package); + static const IconData video = IconData(0xe209, fontFamily: family, fontPackage: package); ///
Visibility Off icon
- static const IconData visibility_off = IconData(0xe205, fontFamily: family, fontPackage: package); + static const IconData visibility_off = IconData(0xe20a, fontFamily: family, fontPackage: package); ///
Visibility icon
- static const IconData visibility = IconData(0xe206, fontFamily: family, fontPackage: package); + static const IconData visibility = IconData(0xe20b, fontFamily: family, fontPackage: package); ///
Volte icon
- static const IconData volte = IconData(0xe207, fontFamily: family, fontPackage: package); + static const IconData volte = IconData(0xe20c, fontFamily: family, fontPackage: package); ///
Volume Down icon
- static const IconData volume_down = IconData(0xe208, fontFamily: family, fontPackage: package); + static const IconData volume_down = IconData(0xe20d, fontFamily: family, fontPackage: package); ///
Volume Mute icon
- static const IconData volume_mute = IconData(0xe209, fontFamily: family, fontPackage: package); + static const IconData volume_mute = IconData(0xe20e, fontFamily: family, fontPackage: package); ///
Volume Off icon
- static const IconData volume_off = IconData(0xe20a, fontFamily: family, fontPackage: package); + static const IconData volume_off = IconData(0xe20f, fontFamily: family, fontPackage: package); ///
Volume Up icon
- static const IconData volume_up = IconData(0xe20b, fontFamily: family, fontPackage: package); + static const IconData volume_up = IconData(0xe210, fontFamily: family, fontPackage: package); ///
Warning Outline icon
- static const IconData warning_outline = IconData(0xe20c, fontFamily: family, fontPackage: package); + static const IconData warning_outline = IconData(0xe211, fontFamily: family, fontPackage: package); ///
Warning icon
- static const IconData warning = IconData(0xe20d, fontFamily: family, fontPackage: package); + static const IconData warning = IconData(0xe212, fontFamily: family, fontPackage: package); ///
Watch icon
- static const IconData watch = IconData(0xe20e, fontFamily: family, fontPackage: package); + static const IconData watch = IconData(0xe213, fontFamily: family, fontPackage: package); ///
Wb Image icon
- static const IconData wb_image = IconData(0xe20f, fontFamily: family, fontPackage: package); + static const IconData wb_image = IconData(0xe214, fontFamily: family, fontPackage: package); ///
Wb icon
- static const IconData wb = IconData(0xe210, fontFamily: family, fontPackage: package); + static const IconData wb = IconData(0xe215, fontFamily: family, fontPackage: package); ///
World Action icon
- static const IconData world_action = IconData(0xe211, fontFamily: family, fontPackage: package); + static const IconData world_action = IconData(0xe216, fontFamily: family, fontPackage: package); ///
World icon
- static const IconData world = IconData(0xe212, fontFamily: family, fontPackage: package); + static const IconData world = IconData(0xe217, fontFamily: family, fontPackage: package); ///
Write icon
- static const IconData write = IconData(0xe213, fontFamily: family, fontPackage: package); + static const IconData write = IconData(0xe218, fontFamily: family, fontPackage: package); ///
Youtube icon
- static const IconData youtube = IconData(0xe214, fontFamily: family, fontPackage: package); + static const IconData youtube = IconData(0xe219, fontFamily: family, fontPackage: package); ///
Zero Scale icon
- static const IconData zero_scale = IconData(0xe215, fontFamily: family, fontPackage: package); + static const IconData zero_scale = IconData(0xe21a, fontFamily: family, fontPackage: package); ///
Zoom In Map icon
- static const IconData zoom_in_map = IconData(0xe216, fontFamily: family, fontPackage: package); + static const IconData zoom_in_map = IconData(0xe21b, fontFamily: family, fontPackage: package); ///
Zoom In icon
- static const IconData zoom_in = IconData(0xe217, fontFamily: family, fontPackage: package); + static const IconData zoom_in = IconData(0xe21c, fontFamily: family, fontPackage: package); ///
Zoom Out Map icon
- static const IconData zoom_out_map = IconData(0xe218, fontFamily: family, fontPackage: package); + static const IconData zoom_out_map = IconData(0xe21d, fontFamily: family, fontPackage: package); ///
Zoom Out icon
- static const IconData zoom_out = IconData(0xe219, fontFamily: family, fontPackage: package); + static const IconData zoom_out = IconData(0xe21e, fontFamily: family, fontPackage: package); // Round Icons ///
Activity icon (round)
@@ -2148,1107 +2163,1122 @@ abstract class ZetaIcons { ///
Columns icon (round)
static const IconData columns_round = IconData(0xe0aa, fontFamily: familyRound, fontPackage: package); + ///
Comms Chat New icon (round)
+ static const IconData comms_chat_new_round = IconData(0xe0ab, fontFamily: familyRound, fontPackage: package); + + ///
Comms Chat icon (round)
+ static const IconData comms_chat_round = IconData(0xe0ac, fontFamily: familyRound, fontPackage: package); + + ///
Comms Chat Unread icon (round)
+ static const IconData comms_chat_unread_round = IconData(0xe0ad, fontFamily: familyRound, fontPackage: package); + ///
Contactless Pay icon (round)
- static const IconData contactless_pay_round = IconData(0xe0ab, fontFamily: familyRound, fontPackage: package); + static const IconData contactless_pay_round = IconData(0xe0ae, fontFamily: familyRound, fontPackage: package); ///
Content icon (round)
- static const IconData content_round = IconData(0xe0ac, fontFamily: familyRound, fontPackage: package); + static const IconData content_round = IconData(0xe0af, fontFamily: familyRound, fontPackage: package); ///
Contrast Image icon (round)
- static const IconData contrast_image_round = IconData(0xe0ad, fontFamily: familyRound, fontPackage: package); + static const IconData contrast_image_round = IconData(0xe0b0, fontFamily: familyRound, fontPackage: package); ///
Contrast icon (round)
- static const IconData contrast_round = IconData(0xe0ae, fontFamily: familyRound, fontPackage: package); + static const IconData contrast_round = IconData(0xe0b1, fontFamily: familyRound, fontPackage: package); ///
Conversation icon (round)
- static const IconData conversation_round = IconData(0xe0af, fontFamily: familyRound, fontPackage: package); + static const IconData conversation_round = IconData(0xe0b2, fontFamily: familyRound, fontPackage: package); ///
Copy File icon (round)
- static const IconData copy_file_round = IconData(0xe0b0, fontFamily: familyRound, fontPackage: package); + static const IconData copy_file_round = IconData(0xe0b3, fontFamily: familyRound, fontPackage: package); ///
Create New Folder icon (round)
- static const IconData create_new_folder_round = IconData(0xe0b1, fontFamily: familyRound, fontPackage: package); + static const IconData create_new_folder_round = IconData(0xe0b4, fontFamily: familyRound, fontPackage: package); ///
Credit Card icon (round)
- static const IconData credit_card_round = IconData(0xe0b2, fontFamily: familyRound, fontPackage: package); + static const IconData credit_card_round = IconData(0xe0b5, fontFamily: familyRound, fontPackage: package); ///
Credit Card Swipe icon (round)
- static const IconData credit_card_swipe_round = IconData(0xe0b3, fontFamily: familyRound, fontPackage: package); + static const IconData credit_card_swipe_round = IconData(0xe0b6, fontFamily: familyRound, fontPackage: package); ///
Crop icon (round)
- static const IconData crop_round = IconData(0xe0b4, fontFamily: familyRound, fontPackage: package); + static const IconData crop_round = IconData(0xe0b7, fontFamily: familyRound, fontPackage: package); ///
Dark Mode icon (round)
- static const IconData dark_mode_round = IconData(0xe0b5, fontFamily: familyRound, fontPackage: package); + static const IconData dark_mode_round = IconData(0xe0b8, fontFamily: familyRound, fontPackage: package); ///
Dashboard icon (round)
- static const IconData dashboard_round = IconData(0xe0b6, fontFamily: familyRound, fontPackage: package); + static const IconData dashboard_round = IconData(0xe0b9, fontFamily: familyRound, fontPackage: package); ///
Delete Forever icon (round)
- static const IconData delete_forever_round = IconData(0xe0b7, fontFamily: familyRound, fontPackage: package); + static const IconData delete_forever_round = IconData(0xe0ba, fontFamily: familyRound, fontPackage: package); ///
Delete Outline icon (round)
- static const IconData delete_outline_round = IconData(0xe0b8, fontFamily: familyRound, fontPackage: package); + static const IconData delete_outline_round = IconData(0xe0bb, fontFamily: familyRound, fontPackage: package); ///
Delete icon (round)
- static const IconData delete_round = IconData(0xe0b9, fontFamily: familyRound, fontPackage: package); + static const IconData delete_round = IconData(0xe0bc, fontFamily: familyRound, fontPackage: package); ///
Desktop icon (round)
- static const IconData desktop_round = IconData(0xe0ba, fontFamily: familyRound, fontPackage: package); + static const IconData desktop_round = IconData(0xe0bd, fontFamily: familyRound, fontPackage: package); ///
Device Settings icon (round)
- static const IconData device_settings_round = IconData(0xe0bb, fontFamily: familyRound, fontPackage: package); + static const IconData device_settings_round = IconData(0xe0be, fontFamily: familyRound, fontPackage: package); ///
Devices Ecosystem icon (round)
- static const IconData devices_ecosystem_round = IconData(0xe0bc, fontFamily: familyRound, fontPackage: package); + static const IconData devices_ecosystem_round = IconData(0xe0bf, fontFamily: familyRound, fontPackage: package); ///
Devices icon (round)
- static const IconData devices_round = IconData(0xe0bd, fontFamily: familyRound, fontPackage: package); + static const IconData devices_round = IconData(0xe0c0, fontFamily: familyRound, fontPackage: package); ///
Dialpad icon (round)
- static const IconData dialpad_round = IconData(0xe0be, fontFamily: familyRound, fontPackage: package); + static const IconData dialpad_round = IconData(0xe0c1, fontFamily: familyRound, fontPackage: package); ///
Dislike icon (round)
- static const IconData dislike_round = IconData(0xe0bf, fontFamily: familyRound, fontPackage: package); + static const IconData dislike_round = IconData(0xe0c2, fontFamily: familyRound, fontPackage: package); ///
Distribute Horizontal icon (round)
- static const IconData distribute_horizontal_round = IconData(0xe0c0, fontFamily: familyRound, fontPackage: package); + static const IconData distribute_horizontal_round = IconData(0xe0c3, fontFamily: familyRound, fontPackage: package); ///
Distribute Vertical icon (round)
- static const IconData distribute_vertical_round = IconData(0xe0c1, fontFamily: familyRound, fontPackage: package); + static const IconData distribute_vertical_round = IconData(0xe0c4, fontFamily: familyRound, fontPackage: package); ///
Doc Attach icon (round)
- static const IconData doc_attach_round = IconData(0xe0c2, fontFamily: familyRound, fontPackage: package); + static const IconData doc_attach_round = IconData(0xe0c5, fontFamily: familyRound, fontPackage: package); ///
Document icon (round)
- static const IconData document_round = IconData(0xe0c3, fontFamily: familyRound, fontPackage: package); + static const IconData document_round = IconData(0xe0c6, fontFamily: familyRound, fontPackage: package); ///
Dollar icon (round)
- static const IconData dollar_round = IconData(0xe0c4, fontFamily: familyRound, fontPackage: package); + static const IconData dollar_round = IconData(0xe0c7, fontFamily: familyRound, fontPackage: package); ///
Download icon (round)
- static const IconData download_round = IconData(0xe0c5, fontFamily: familyRound, fontPackage: package); + static const IconData download_round = IconData(0xe0c8, fontFamily: familyRound, fontPackage: package); ///
Downloading icon (round)
- static const IconData downloading_round = IconData(0xe0c6, fontFamily: familyRound, fontPackage: package); + static const IconData downloading_round = IconData(0xe0c9, fontFamily: familyRound, fontPackage: package); ///
Drop Down Circle icon (round)
- static const IconData drop_down_circle_round = IconData(0xe0c7, fontFamily: familyRound, fontPackage: package); + static const IconData drop_down_circle_round = IconData(0xe0ca, fontFamily: familyRound, fontPackage: package); ///
Eas icon (round)
- static const IconData eas_round = IconData(0xe0c8, fontFamily: familyRound, fontPackage: package); + static const IconData eas_round = IconData(0xe0cb, fontFamily: familyRound, fontPackage: package); ///
Edit Border icon (round)
- static const IconData edit_border_round = IconData(0xe0c9, fontFamily: familyRound, fontPackage: package); + static const IconData edit_border_round = IconData(0xe0cc, fontFamily: familyRound, fontPackage: package); ///
Edit icon (round)
- static const IconData edit_round = IconData(0xe0ca, fontFamily: familyRound, fontPackage: package); + static const IconData edit_round = IconData(0xe0cd, fontFamily: familyRound, fontPackage: package); ///
Email Alt icon (round)
- static const IconData email_alt_round = IconData(0xe0cb, fontFamily: familyRound, fontPackage: package); + static const IconData email_alt_round = IconData(0xe0ce, fontFamily: familyRound, fontPackage: package); ///
Email Outline icon (round)
- static const IconData email_outline_round = IconData(0xe0cc, fontFamily: familyRound, fontPackage: package); + static const IconData email_outline_round = IconData(0xe0cf, fontFamily: familyRound, fontPackage: package); ///
Email Reply All icon (round)
- static const IconData email_reply_all_round = IconData(0xe0cd, fontFamily: familyRound, fontPackage: package); + static const IconData email_reply_all_round = IconData(0xe0d0, fontFamily: familyRound, fontPackage: package); ///
Email icon (round)
- static const IconData email_round = IconData(0xe0ce, fontFamily: familyRound, fontPackage: package); + static const IconData email_round = IconData(0xe0d1, fontFamily: familyRound, fontPackage: package); ///
End Call icon (round)
- static const IconData end_call_round = IconData(0xe0cf, fontFamily: familyRound, fontPackage: package); + static const IconData end_call_round = IconData(0xe0d2, fontFamily: familyRound, fontPackage: package); ///
Enterprise Diagnostics icon (round)
- static const IconData enterprise_diagnostics_round = IconData(0xe0d0, fontFamily: familyRound, fontPackage: package); + static const IconData enterprise_diagnostics_round = IconData(0xe0d3, fontFamily: familyRound, fontPackage: package); ///
Environmental icon (round)
- static const IconData environmental_round = IconData(0xe0d1, fontFamily: familyRound, fontPackage: package); + static const IconData environmental_round = IconData(0xe0d4, fontFamily: familyRound, fontPackage: package); ///
Error Outline icon (round)
- static const IconData error_outline_round = IconData(0xe0d2, fontFamily: familyRound, fontPackage: package); + static const IconData error_outline_round = IconData(0xe0d5, fontFamily: familyRound, fontPackage: package); ///
Error icon (round)
- static const IconData error_round = IconData(0xe0d3, fontFamily: familyRound, fontPackage: package); + static const IconData error_round = IconData(0xe0d6, fontFamily: familyRound, fontPackage: package); ///
Ethernet icon (round)
- static const IconData ethernet_round = IconData(0xe0d4, fontFamily: familyRound, fontPackage: package); + static const IconData ethernet_round = IconData(0xe0d7, fontFamily: familyRound, fontPackage: package); ///
Exit icon (round)
- static const IconData exit_round = IconData(0xe0d5, fontFamily: familyRound, fontPackage: package); + static const IconData exit_round = IconData(0xe0d8, fontFamily: familyRound, fontPackage: package); ///
Expand Less icon (round)
- static const IconData expand_less_round = IconData(0xe0d6, fontFamily: familyRound, fontPackage: package); + static const IconData expand_less_round = IconData(0xe0d9, fontFamily: familyRound, fontPackage: package); ///
Expand More icon (round)
- static const IconData expand_more_round = IconData(0xe0d7, fontFamily: familyRound, fontPackage: package); + static const IconData expand_more_round = IconData(0xe0da, fontFamily: familyRound, fontPackage: package); ///
Eye Dropper icon (round)
- static const IconData eye_dropper_round = IconData(0xe0d8, fontFamily: familyRound, fontPackage: package); + static const IconData eye_dropper_round = IconData(0xe0db, fontFamily: familyRound, fontPackage: package); ///
Eye Preview icon (round)
- static const IconData eye_preview_round = IconData(0xe0d9, fontFamily: familyRound, fontPackage: package); + static const IconData eye_preview_round = IconData(0xe0dc, fontFamily: familyRound, fontPackage: package); ///
Face Id icon (round)
- static const IconData face_id_round = IconData(0xe0da, fontFamily: familyRound, fontPackage: package); + static const IconData face_id_round = IconData(0xe0dd, fontFamily: familyRound, fontPackage: package); ///
Facebook icon (round)
- static const IconData facebook_round = IconData(0xe0db, fontFamily: familyRound, fontPackage: package); + static const IconData facebook_round = IconData(0xe0de, fontFamily: familyRound, fontPackage: package); ///
Factory icon (round)
- static const IconData factory_round = IconData(0xe0dc, fontFamily: familyRound, fontPackage: package); + static const IconData factory_round = IconData(0xe0df, fontFamily: familyRound, fontPackage: package); ///
Fast Forward icon (round)
- static const IconData fast_forward_round = IconData(0xe0dd, fontFamily: familyRound, fontPackage: package); + static const IconData fast_forward_round = IconData(0xe0e0, fontFamily: familyRound, fontPackage: package); ///
Fast Rewind icon (round)
- static const IconData fast_rewind_round = IconData(0xe0de, fontFamily: familyRound, fontPackage: package); + static const IconData fast_rewind_round = IconData(0xe0e1, fontFamily: familyRound, fontPackage: package); ///
File icon (round)
- static const IconData file_round = IconData(0xe0df, fontFamily: familyRound, fontPackage: package); + static const IconData file_round = IconData(0xe0e2, fontFamily: familyRound, fontPackage: package); ///
Filter Alt icon (round)
- static const IconData filter_alt_round = IconData(0xe0e0, fontFamily: familyRound, fontPackage: package); + static const IconData filter_alt_round = IconData(0xe0e3, fontFamily: familyRound, fontPackage: package); ///
Filter icon (round)
- static const IconData filter_round = IconData(0xe0e1, fontFamily: familyRound, fontPackage: package); + static const IconData filter_round = IconData(0xe0e4, fontFamily: familyRound, fontPackage: package); ///
Finished Download icon (round)
- static const IconData finished_download_round = IconData(0xe0e2, fontFamily: familyRound, fontPackage: package); + static const IconData finished_download_round = IconData(0xe0e5, fontFamily: familyRound, fontPackage: package); ///
First Page icon (round)
- static const IconData first_page_round = IconData(0xe0e3, fontFamily: familyRound, fontPackage: package); + static const IconData first_page_round = IconData(0xe0e6, fontFamily: familyRound, fontPackage: package); ///
Flag icon (round)
- static const IconData flag_round = IconData(0xe0e4, fontFamily: familyRound, fontPackage: package); + static const IconData flag_round = IconData(0xe0e7, fontFamily: familyRound, fontPackage: package); ///
Flight Mode icon (round)
- static const IconData flight_mode_round = IconData(0xe0e5, fontFamily: familyRound, fontPackage: package); + static const IconData flight_mode_round = IconData(0xe0e8, fontFamily: familyRound, fontPackage: package); ///
Flight icon (round)
- static const IconData flight_round = IconData(0xe0e6, fontFamily: familyRound, fontPackage: package); + static const IconData flight_round = IconData(0xe0e9, fontFamily: familyRound, fontPackage: package); ///
Flip icon (round)
- static const IconData flip_round = IconData(0xe0e7, fontFamily: familyRound, fontPackage: package); + static const IconData flip_round = IconData(0xe0ea, fontFamily: familyRound, fontPackage: package); ///
Folder File icon (round)
- static const IconData folder_file_round = IconData(0xe0e8, fontFamily: familyRound, fontPackage: package); + static const IconData folder_file_round = IconData(0xe0eb, fontFamily: familyRound, fontPackage: package); ///
Folder Outline icon (round)
- static const IconData folder_outline_round = IconData(0xe0e9, fontFamily: familyRound, fontPackage: package); + static const IconData folder_outline_round = IconData(0xe0ec, fontFamily: familyRound, fontPackage: package); ///
Folder icon (round)
- static const IconData folder_round = IconData(0xe0ea, fontFamily: familyRound, fontPackage: package); + static const IconData folder_round = IconData(0xe0ed, fontFamily: familyRound, fontPackage: package); ///
Font Size Decrease icon (round)
- static const IconData font_size_decrease_round = IconData(0xe0eb, fontFamily: familyRound, fontPackage: package); + static const IconData font_size_decrease_round = IconData(0xe0ee, fontFamily: familyRound, fontPackage: package); ///
Font Size Increase icon (round)
- static const IconData font_size_increase_round = IconData(0xe0ec, fontFamily: familyRound, fontPackage: package); + static const IconData font_size_increase_round = IconData(0xe0ef, fontFamily: familyRound, fontPackage: package); ///
Format Shapes icon (round)
- static const IconData format_shapes_round = IconData(0xe0ed, fontFamily: familyRound, fontPackage: package); + static const IconData format_shapes_round = IconData(0xe0f0, fontFamily: familyRound, fontPackage: package); ///
Forward icon (round)
- static const IconData forward_round = IconData(0xe0ee, fontFamily: familyRound, fontPackage: package); + static const IconData forward_round = IconData(0xe0f1, fontFamily: familyRound, fontPackage: package); ///
Freezer icon (round)
- static const IconData freezer_round = IconData(0xe0ef, fontFamily: familyRound, fontPackage: package); + static const IconData freezer_round = IconData(0xe0f2, fontFamily: familyRound, fontPackage: package); ///
Full Screen Exit icon (round)
- static const IconData full_screen_exit_round = IconData(0xe0f0, fontFamily: familyRound, fontPackage: package); + static const IconData full_screen_exit_round = IconData(0xe0f3, fontFamily: familyRound, fontPackage: package); ///
Full Screen icon (round)
- static const IconData full_screen_round = IconData(0xe0f1, fontFamily: familyRound, fontPackage: package); + static const IconData full_screen_round = IconData(0xe0f4, fontFamily: familyRound, fontPackage: package); ///
Gif icon (round)
- static const IconData gif_round = IconData(0xe0f2, fontFamily: familyRound, fontPackage: package); + static const IconData gif_round = IconData(0xe0f5, fontFamily: familyRound, fontPackage: package); ///
Glossary icon (round)
- static const IconData glossary_round = IconData(0xe0f3, fontFamily: familyRound, fontPackage: package); + static const IconData glossary_round = IconData(0xe0f6, fontFamily: familyRound, fontPackage: package); + + ///
Google Drive icon (round)
+ static const IconData google_drive_round = IconData(0xe0f7, fontFamily: familyRound, fontPackage: package); ///
Grid Off icon (round)
- static const IconData grid_off_round = IconData(0xe0f4, fontFamily: familyRound, fontPackage: package); + static const IconData grid_off_round = IconData(0xe0f8, fontFamily: familyRound, fontPackage: package); ///
Grid On icon (round)
- static const IconData grid_on_round = IconData(0xe0f5, fontFamily: familyRound, fontPackage: package); + static const IconData grid_on_round = IconData(0xe0f9, fontFamily: familyRound, fontPackage: package); ///
Grid View icon (round)
- static const IconData grid_view_round = IconData(0xe0f6, fontFamily: familyRound, fontPackage: package); + static const IconData grid_view_round = IconData(0xe0fa, fontFamily: familyRound, fontPackage: package); ///
Group icon (round)
- static const IconData group_round = IconData(0xe0f7, fontFamily: familyRound, fontPackage: package); + static const IconData group_round = IconData(0xe0fb, fontFamily: familyRound, fontPackage: package); ///
Groups icon (round)
- static const IconData groups_round = IconData(0xe0f8, fontFamily: familyRound, fontPackage: package); + static const IconData groups_round = IconData(0xe0fc, fontFamily: familyRound, fontPackage: package); ///
Hamburger Menu Navigation Rail icon (round)
static const IconData hamburger_menu_navigation_rail_round = - IconData(0xe0f9, fontFamily: familyRound, fontPackage: package); + IconData(0xe0fd, fontFamily: familyRound, fontPackage: package); ///
Hamburger Menu icon (round)
- static const IconData hamburger_menu_round = IconData(0xe0fa, fontFamily: familyRound, fontPackage: package); + static const IconData hamburger_menu_round = IconData(0xe0fe, fontFamily: familyRound, fontPackage: package); ///
Hamburger Menu Thick icon (round)
- static const IconData hamburger_menu_thick_round = IconData(0xe0fb, fontFamily: familyRound, fontPackage: package); + static const IconData hamburger_menu_thick_round = IconData(0xe0ff, fontFamily: familyRound, fontPackage: package); ///
Hand icon (round)
- static const IconData hand_round = IconData(0xe0fc, fontFamily: familyRound, fontPackage: package); + static const IconData hand_round = IconData(0xe100, fontFamily: familyRound, fontPackage: package); ///
Happy icon (round)
- static const IconData happy_round = IconData(0xe0fd, fontFamily: familyRound, fontPackage: package); + static const IconData happy_round = IconData(0xe101, fontFamily: familyRound, fontPackage: package); ///
Hdmi icon (round)
- static const IconData hdmi_round = IconData(0xe0fe, fontFamily: familyRound, fontPackage: package); + static const IconData hdmi_round = IconData(0xe102, fontFamily: familyRound, fontPackage: package); ///
Hdr icon (round)
- static const IconData hdr_round = IconData(0xe0ff, fontFamily: familyRound, fontPackage: package); + static const IconData hdr_round = IconData(0xe103, fontFamily: familyRound, fontPackage: package); ///
Headphones icon (round)
- static const IconData headphones_round = IconData(0xe100, fontFamily: familyRound, fontPackage: package); + static const IconData headphones_round = IconData(0xe104, fontFamily: familyRound, fontPackage: package); ///
Headset icon (round)
- static const IconData headset_round = IconData(0xe101, fontFamily: familyRound, fontPackage: package); + static const IconData headset_round = IconData(0xe105, fontFamily: familyRound, fontPackage: package); ///
Help Outline icon (round)
- static const IconData help_outline_round = IconData(0xe102, fontFamily: familyRound, fontPackage: package); + static const IconData help_outline_round = IconData(0xe106, fontFamily: familyRound, fontPackage: package); ///
Help icon (round)
- static const IconData help_round = IconData(0xe103, fontFamily: familyRound, fontPackage: package); + static const IconData help_round = IconData(0xe107, fontFamily: familyRound, fontPackage: package); ///
History icon (round)
- static const IconData history_round = IconData(0xe104, fontFamily: familyRound, fontPackage: package); + static const IconData history_round = IconData(0xe108, fontFamily: familyRound, fontPackage: package); ///
Home icon (round)
- static const IconData home_round = IconData(0xe105, fontFamily: familyRound, fontPackage: package); + static const IconData home_round = IconData(0xe109, fontFamily: familyRound, fontPackage: package); ///
Hourglass icon (round)
- static const IconData hourglass_round = IconData(0xe106, fontFamily: familyRound, fontPackage: package); + static const IconData hourglass_round = IconData(0xe10a, fontFamily: familyRound, fontPackage: package); ///
How Do I icon (round)
- static const IconData how_do_i_round = IconData(0xe107, fontFamily: familyRound, fontPackage: package); + static const IconData how_do_i_round = IconData(0xe10b, fontFamily: familyRound, fontPackage: package); ///
Image Library icon (round)
- static const IconData image_library_round = IconData(0xe108, fontFamily: familyRound, fontPackage: package); + static const IconData image_library_round = IconData(0xe10c, fontFamily: familyRound, fontPackage: package); ///
Image icon (round)
- static const IconData image_round = IconData(0xe109, fontFamily: familyRound, fontPackage: package); + static const IconData image_round = IconData(0xe10d, fontFamily: familyRound, fontPackage: package); ///
Important Notification icon (round)
- static const IconData important_notification_round = IconData(0xe10a, fontFamily: familyRound, fontPackage: package); + static const IconData important_notification_round = IconData(0xe10e, fontFamily: familyRound, fontPackage: package); ///
Inbox icon (round)
- static const IconData inbox_round = IconData(0xe10b, fontFamily: familyRound, fontPackage: package); + static const IconData inbox_round = IconData(0xe10f, fontFamily: familyRound, fontPackage: package); ///
Indent Decrease icon (round)
- static const IconData indent_decrease_round = IconData(0xe10c, fontFamily: familyRound, fontPackage: package); + static const IconData indent_decrease_round = IconData(0xe110, fontFamily: familyRound, fontPackage: package); ///
Indent Increase icon (round)
- static const IconData indent_increase_round = IconData(0xe10d, fontFamily: familyRound, fontPackage: package); + static const IconData indent_increase_round = IconData(0xe111, fontFamily: familyRound, fontPackage: package); ///
Indeterminate Check Box icon (round)
- static const IconData indeterminate_check_box_round = IconData(0xe10e, fontFamily: familyRound, fontPackage: package); + static const IconData indeterminate_check_box_round = IconData(0xe112, fontFamily: familyRound, fontPackage: package); ///
Info icon (round)
- static const IconData info_round = IconData(0xe10f, fontFamily: familyRound, fontPackage: package); + static const IconData info_round = IconData(0xe113, fontFamily: familyRound, fontPackage: package); ///
Instagram icon (round)
- static const IconData instagram_round = IconData(0xe110, fontFamily: familyRound, fontPackage: package); + static const IconData instagram_round = IconData(0xe114, fontFamily: familyRound, fontPackage: package); ///
Ios Share icon (round)
- static const IconData ios_share_round = IconData(0xe111, fontFamily: familyRound, fontPackage: package); + static const IconData ios_share_round = IconData(0xe115, fontFamily: familyRound, fontPackage: package); ///
Iso icon (round)
- static const IconData iso_round = IconData(0xe112, fontFamily: familyRound, fontPackage: package); + static const IconData iso_round = IconData(0xe116, fontFamily: familyRound, fontPackage: package); ///
Issue Audit icon (round)
- static const IconData issue_audit_round = IconData(0xe113, fontFamily: familyRound, fontPackage: package); + static const IconData issue_audit_round = IconData(0xe117, fontFamily: familyRound, fontPackage: package); ///
Italic icon (round)
- static const IconData italic_round = IconData(0xe114, fontFamily: familyRound, fontPackage: package); + static const IconData italic_round = IconData(0xe118, fontFamily: familyRound, fontPackage: package); ///
Jpg Attach icon (round)
- static const IconData jpg_attach_round = IconData(0xe115, fontFamily: familyRound, fontPackage: package); + static const IconData jpg_attach_round = IconData(0xe119, fontFamily: familyRound, fontPackage: package); ///
Justify icon (round)
- static const IconData justify_round = IconData(0xe116, fontFamily: familyRound, fontPackage: package); + static const IconData justify_round = IconData(0xe11a, fontFamily: familyRound, fontPackage: package); ///
Keyboard icon (round)
- static const IconData keyboard_round = IconData(0xe117, fontFamily: familyRound, fontPackage: package); + static const IconData keyboard_round = IconData(0xe11b, fontFamily: familyRound, fontPackage: package); ///
Label icon (round)
- static const IconData label_round = IconData(0xe118, fontFamily: familyRound, fontPackage: package); + static const IconData label_round = IconData(0xe11c, fontFamily: familyRound, fontPackage: package); ///
Laptop icon (round)
- static const IconData laptop_round = IconData(0xe119, fontFamily: familyRound, fontPackage: package); + static const IconData laptop_round = IconData(0xe11d, fontFamily: familyRound, fontPackage: package); ///
Last Page icon (round)
- static const IconData last_page_round = IconData(0xe11a, fontFamily: familyRound, fontPackage: package); + static const IconData last_page_round = IconData(0xe11e, fontFamily: familyRound, fontPackage: package); ///
Layers icon (round)
- static const IconData layers_round = IconData(0xe11b, fontFamily: familyRound, fontPackage: package); + static const IconData layers_round = IconData(0xe11f, fontFamily: familyRound, fontPackage: package); ///
Light Mode icon (round)
- static const IconData light_mode_round = IconData(0xe11c, fontFamily: familyRound, fontPackage: package); + static const IconData light_mode_round = IconData(0xe120, fontFamily: familyRound, fontPackage: package); ///
Light Rail Train icon (round)
- static const IconData light_rail_train_round = IconData(0xe11d, fontFamily: familyRound, fontPackage: package); + static const IconData light_rail_train_round = IconData(0xe121, fontFamily: familyRound, fontPackage: package); ///
Lightbulb icon (round)
- static const IconData lightbulb_round = IconData(0xe11e, fontFamily: familyRound, fontPackage: package); + static const IconData lightbulb_round = IconData(0xe122, fontFamily: familyRound, fontPackage: package); ///
Like icon (round)
- static const IconData like_round = IconData(0xe11f, fontFamily: familyRound, fontPackage: package); + static const IconData like_round = IconData(0xe123, fontFamily: familyRound, fontPackage: package); ///
Line Spacing icon (round)
- static const IconData line_spacing_round = IconData(0xe120, fontFamily: familyRound, fontPackage: package); + static const IconData line_spacing_round = IconData(0xe124, fontFamily: familyRound, fontPackage: package); ///
Link Add icon (round)
- static const IconData link_add_round = IconData(0xe121, fontFamily: familyRound, fontPackage: package); + static const IconData link_add_round = IconData(0xe125, fontFamily: familyRound, fontPackage: package); ///
Link icon (round)
- static const IconData link_round = IconData(0xe122, fontFamily: familyRound, fontPackage: package); + static const IconData link_round = IconData(0xe126, fontFamily: familyRound, fontPackage: package); ///
Linkedin icon (round)
- static const IconData linkedin_round = IconData(0xe123, fontFamily: familyRound, fontPackage: package); + static const IconData linkedin_round = IconData(0xe127, fontFamily: familyRound, fontPackage: package); ///
List Alt icon (round)
- static const IconData list_alt_round = IconData(0xe124, fontFamily: familyRound, fontPackage: package); + static const IconData list_alt_round = IconData(0xe128, fontFamily: familyRound, fontPackage: package); ///
List Bullet Contained icon (round)
- static const IconData list_bullet_contained_round = IconData(0xe125, fontFamily: familyRound, fontPackage: package); + static const IconData list_bullet_contained_round = IconData(0xe129, fontFamily: familyRound, fontPackage: package); ///
List Feedback icon (round)
- static const IconData list_feedback_round = IconData(0xe126, fontFamily: familyRound, fontPackage: package); + static const IconData list_feedback_round = IconData(0xe12a, fontFamily: familyRound, fontPackage: package); ///
List Form icon (round)
- static const IconData list_form_round = IconData(0xe127, fontFamily: familyRound, fontPackage: package); + static const IconData list_form_round = IconData(0xe12b, fontFamily: familyRound, fontPackage: package); ///
List icon (round)
- static const IconData list_round = IconData(0xe128, fontFamily: familyRound, fontPackage: package); + static const IconData list_round = IconData(0xe12c, fontFamily: familyRound, fontPackage: package); ///
Local Shipping icon (round)
- static const IconData local_shipping_round = IconData(0xe129, fontFamily: familyRound, fontPackage: package); + static const IconData local_shipping_round = IconData(0xe12d, fontFamily: familyRound, fontPackage: package); ///
Location Off icon (round)
- static const IconData location_off_round = IconData(0xe12a, fontFamily: familyRound, fontPackage: package); + static const IconData location_off_round = IconData(0xe12e, fontFamily: familyRound, fontPackage: package); ///
Location Point icon (round)
- static const IconData location_point_round = IconData(0xe12b, fontFamily: familyRound, fontPackage: package); + static const IconData location_point_round = IconData(0xe12f, fontFamily: familyRound, fontPackage: package); ///
Location icon (round)
- static const IconData location_round = IconData(0xe12c, fontFamily: familyRound, fontPackage: package); + static const IconData location_round = IconData(0xe130, fontFamily: familyRound, fontPackage: package); ///
Lock Alt icon (round)
- static const IconData lock_alt_round = IconData(0xe12d, fontFamily: familyRound, fontPackage: package); + static const IconData lock_alt_round = IconData(0xe131, fontFamily: familyRound, fontPackage: package); ///
Lock icon (round)
- static const IconData lock_round = IconData(0xe12e, fontFamily: familyRound, fontPackage: package); + static const IconData lock_round = IconData(0xe132, fontFamily: familyRound, fontPackage: package); ///
Lock Undo icon (round)
- static const IconData lock_undo_round = IconData(0xe12f, fontFamily: familyRound, fontPackage: package); + static const IconData lock_undo_round = IconData(0xe133, fontFamily: familyRound, fontPackage: package); ///
Log In icon (round)
- static const IconData log_in_round = IconData(0xe130, fontFamily: familyRound, fontPackage: package); + static const IconData log_in_round = IconData(0xe134, fontFamily: familyRound, fontPackage: package); ///
Log Out icon (round)
- static const IconData log_out_round = IconData(0xe131, fontFamily: familyRound, fontPackage: package); + static const IconData log_out_round = IconData(0xe135, fontFamily: familyRound, fontPackage: package); ///
Love Outline icon (round)
- static const IconData love_outline_round = IconData(0xe132, fontFamily: familyRound, fontPackage: package); + static const IconData love_outline_round = IconData(0xe136, fontFamily: familyRound, fontPackage: package); ///
Love icon (round)
- static const IconData love_round = IconData(0xe133, fontFamily: familyRound, fontPackage: package); + static const IconData love_round = IconData(0xe137, fontFamily: familyRound, fontPackage: package); ///
Maintenance icon (round)
- static const IconData maintenance_round = IconData(0xe134, fontFamily: familyRound, fontPackage: package); + static const IconData maintenance_round = IconData(0xe138, fontFamily: familyRound, fontPackage: package); ///
Map icon (round)
- static const IconData map_round = IconData(0xe135, fontFamily: familyRound, fontPackage: package); + static const IconData map_round = IconData(0xe139, fontFamily: familyRound, fontPackage: package); ///
Meal icon (round)
- static const IconData meal_round = IconData(0xe136, fontFamily: familyRound, fontPackage: package); + static const IconData meal_round = IconData(0xe13a, fontFamily: familyRound, fontPackage: package); ///
Medium icon (round)
- static const IconData medium_round = IconData(0xe137, fontFamily: familyRound, fontPackage: package); + static const IconData medium_round = IconData(0xe13b, fontFamily: familyRound, fontPackage: package); ///
Memory icon (round)
- static const IconData memory_round = IconData(0xe138, fontFamily: familyRound, fontPackage: package); + static const IconData memory_round = IconData(0xe13c, fontFamily: familyRound, fontPackage: package); ///
Message icon (round)
- static const IconData message_round = IconData(0xe139, fontFamily: familyRound, fontPackage: package); + static const IconData message_round = IconData(0xe13d, fontFamily: familyRound, fontPackage: package); ///
Microphone Off icon (round)
- static const IconData microphone_off_round = IconData(0xe13a, fontFamily: familyRound, fontPackage: package); + static const IconData microphone_off_round = IconData(0xe13e, fontFamily: familyRound, fontPackage: package); ///
Microphone Outline icon (round)
- static const IconData microphone_outline_round = IconData(0xe13b, fontFamily: familyRound, fontPackage: package); + static const IconData microphone_outline_round = IconData(0xe13f, fontFamily: familyRound, fontPackage: package); ///
Microphone icon (round)
- static const IconData microphone_round = IconData(0xe13c, fontFamily: familyRound, fontPackage: package); + static const IconData microphone_round = IconData(0xe140, fontFamily: familyRound, fontPackage: package); ///
Mobile Friendly icon (round)
- static const IconData mobile_friendly_round = IconData(0xe13d, fontFamily: familyRound, fontPackage: package); + static const IconData mobile_friendly_round = IconData(0xe141, fontFamily: familyRound, fontPackage: package); ///
Money Euro icon (round)
- static const IconData money_euro_round = IconData(0xe13e, fontFamily: familyRound, fontPackage: package); + static const IconData money_euro_round = IconData(0xe142, fontFamily: familyRound, fontPackage: package); ///
Money Pound icon (round)
- static const IconData money_pound_round = IconData(0xe13f, fontFamily: familyRound, fontPackage: package); + static const IconData money_pound_round = IconData(0xe143, fontFamily: familyRound, fontPackage: package); ///
Money Usd icon (round)
- static const IconData money_usd_round = IconData(0xe140, fontFamily: familyRound, fontPackage: package); + static const IconData money_usd_round = IconData(0xe144, fontFamily: familyRound, fontPackage: package); ///
Monitor icon (round)
- static const IconData monitor_round = IconData(0xe141, fontFamily: familyRound, fontPackage: package); + static const IconData monitor_round = IconData(0xe145, fontFamily: familyRound, fontPackage: package); ///
More Horizontal icon (round)
- static const IconData more_horizontal_round = IconData(0xe142, fontFamily: familyRound, fontPackage: package); + static const IconData more_horizontal_round = IconData(0xe146, fontFamily: familyRound, fontPackage: package); ///
More Vertical icon (round)
- static const IconData more_vertical_round = IconData(0xe143, fontFamily: familyRound, fontPackage: package); + static const IconData more_vertical_round = IconData(0xe147, fontFamily: familyRound, fontPackage: package); ///
My Location icon (round)
- static const IconData my_location_round = IconData(0xe144, fontFamily: familyRound, fontPackage: package); + static const IconData my_location_round = IconData(0xe148, fontFamily: familyRound, fontPackage: package); ///
Navigate icon (round)
- static const IconData navigate_round = IconData(0xe145, fontFamily: familyRound, fontPackage: package); + static const IconData navigate_round = IconData(0xe149, fontFamily: familyRound, fontPackage: package); ///
Navigation icon (round)
- static const IconData navigation_round = IconData(0xe146, fontFamily: familyRound, fontPackage: package); + static const IconData navigation_round = IconData(0xe14a, fontFamily: familyRound, fontPackage: package); ///
Near Me icon (round)
- static const IconData near_me_round = IconData(0xe147, fontFamily: familyRound, fontPackage: package); + static const IconData near_me_round = IconData(0xe14b, fontFamily: familyRound, fontPackage: package); ///
Network Signal icon (round)
- static const IconData network_signal_round = IconData(0xe148, fontFamily: familyRound, fontPackage: package); + static const IconData network_signal_round = IconData(0xe14c, fontFamily: familyRound, fontPackage: package); ///
New Chat icon (round)
- static const IconData new_chat_round = IconData(0xe149, fontFamily: familyRound, fontPackage: package); + static const IconData new_chat_round = IconData(0xe14d, fontFamily: familyRound, fontPackage: package); ///
Nfc icon (round)
- static const IconData nfc_round = IconData(0xe14a, fontFamily: familyRound, fontPackage: package); + static const IconData nfc_round = IconData(0xe14e, fontFamily: familyRound, fontPackage: package); ///
Night icon (round)
- static const IconData night_round = IconData(0xe14b, fontFamily: familyRound, fontPackage: package); + static const IconData night_round = IconData(0xe14f, fontFamily: familyRound, fontPackage: package); ///
No Color icon (round)
- static const IconData no_color_round = IconData(0xe14c, fontFamily: familyRound, fontPackage: package); + static const IconData no_color_round = IconData(0xe150, fontFamily: familyRound, fontPackage: package); ///
Note icon (round)
- static const IconData note_round = IconData(0xe14d, fontFamily: familyRound, fontPackage: package); + static const IconData note_round = IconData(0xe151, fontFamily: familyRound, fontPackage: package); ///
Notifications Off icon (round)
- static const IconData notifications_off_round = IconData(0xe14e, fontFamily: familyRound, fontPackage: package); + static const IconData notifications_off_round = IconData(0xe152, fontFamily: familyRound, fontPackage: package); ///
Numbered List icon (round)
- static const IconData numbered_list_round = IconData(0xe14f, fontFamily: familyRound, fontPackage: package); + static const IconData numbered_list_round = IconData(0xe153, fontFamily: familyRound, fontPackage: package); ///
Open In Full icon (round)
- static const IconData open_in_full_round = IconData(0xe150, fontFamily: familyRound, fontPackage: package); + static const IconData open_in_full_round = IconData(0xe154, fontFamily: familyRound, fontPackage: package); ///
Open In New Window icon (round)
- static const IconData open_in_new_window_round = IconData(0xe151, fontFamily: familyRound, fontPackage: package); + static const IconData open_in_new_window_round = IconData(0xe155, fontFamily: familyRound, fontPackage: package); ///
Open New Off icon (round)
- static const IconData open_new_off_round = IconData(0xe152, fontFamily: familyRound, fontPackage: package); + static const IconData open_new_off_round = IconData(0xe156, fontFamily: familyRound, fontPackage: package); ///
Page Height icon (round)
- static const IconData page_height_round = IconData(0xe153, fontFamily: familyRound, fontPackage: package); + static const IconData page_height_round = IconData(0xe157, fontFamily: familyRound, fontPackage: package); ///
Page Rotate icon (round)
- static const IconData page_rotate_round = IconData(0xe154, fontFamily: familyRound, fontPackage: package); + static const IconData page_rotate_round = IconData(0xe158, fontFamily: familyRound, fontPackage: package); ///
Page Width icon (round)
- static const IconData page_width_round = IconData(0xe155, fontFamily: familyRound, fontPackage: package); + static const IconData page_width_round = IconData(0xe159, fontFamily: familyRound, fontPackage: package); ///
Palette icon (round)
- static const IconData palette_round = IconData(0xe156, fontFamily: familyRound, fontPackage: package); + static const IconData palette_round = IconData(0xe15a, fontFamily: familyRound, fontPackage: package); ///
Partner icon (round)
- static const IconData partner_round = IconData(0xe157, fontFamily: familyRound, fontPackage: package); + static const IconData partner_round = IconData(0xe15b, fontFamily: familyRound, fontPackage: package); ///
Pause Circle icon (round)
- static const IconData pause_circle_round = IconData(0xe158, fontFamily: familyRound, fontPackage: package); + static const IconData pause_circle_round = IconData(0xe15c, fontFamily: familyRound, fontPackage: package); ///
Pause icon (round)
- static const IconData pause_round = IconData(0xe159, fontFamily: familyRound, fontPackage: package); + static const IconData pause_round = IconData(0xe15d, fontFamily: familyRound, fontPackage: package); ///
Pdf Attach icon (round)
- static const IconData pdf_attach_round = IconData(0xe15a, fontFamily: familyRound, fontPackage: package); + static const IconData pdf_attach_round = IconData(0xe15e, fontFamily: familyRound, fontPackage: package); ///
Pending icon (round)
- static const IconData pending_round = IconData(0xe15b, fontFamily: familyRound, fontPackage: package); + static const IconData pending_round = IconData(0xe15f, fontFamily: familyRound, fontPackage: package); ///
Person Admin icon (round)
- static const IconData person_admin_round = IconData(0xe15c, fontFamily: familyRound, fontPackage: package); + static const IconData person_admin_round = IconData(0xe160, fontFamily: familyRound, fontPackage: package); ///
Person Assign icon (round)
- static const IconData person_assign_round = IconData(0xe15d, fontFamily: familyRound, fontPackage: package); + static const IconData person_assign_round = IconData(0xe161, fontFamily: familyRound, fontPackage: package); ///
Person Clock icon (round)
- static const IconData person_clock_round = IconData(0xe15e, fontFamily: familyRound, fontPackage: package); + static const IconData person_clock_round = IconData(0xe162, fontFamily: familyRound, fontPackage: package); ///
Person Info icon (round)
- static const IconData person_info_round = IconData(0xe15f, fontFamily: familyRound, fontPackage: package); + static const IconData person_info_round = IconData(0xe163, fontFamily: familyRound, fontPackage: package); ///
Person Manager icon (round)
- static const IconData person_manager_round = IconData(0xe160, fontFamily: familyRound, fontPackage: package); + static const IconData person_manager_round = IconData(0xe164, fontFamily: familyRound, fontPackage: package); ///
Person Move icon (round)
- static const IconData person_move_round = IconData(0xe161, fontFamily: familyRound, fontPackage: package); + static const IconData person_move_round = IconData(0xe165, fontFamily: familyRound, fontPackage: package); ///
Person Outline icon (round)
- static const IconData person_outline_round = IconData(0xe162, fontFamily: familyRound, fontPackage: package); + static const IconData person_outline_round = IconData(0xe166, fontFamily: familyRound, fontPackage: package); ///
Person icon (round)
- static const IconData person_round = IconData(0xe163, fontFamily: familyRound, fontPackage: package); + static const IconData person_round = IconData(0xe167, fontFamily: familyRound, fontPackage: package); ///
Person Search icon (round)
- static const IconData person_search_round = IconData(0xe164, fontFamily: familyRound, fontPackage: package); + static const IconData person_search_round = IconData(0xe168, fontFamily: familyRound, fontPackage: package); ///
Person Swap icon (round)
- static const IconData person_swap_round = IconData(0xe165, fontFamily: familyRound, fontPackage: package); + static const IconData person_swap_round = IconData(0xe169, fontFamily: familyRound, fontPackage: package); ///
Person Walk icon (round)
- static const IconData person_walk_round = IconData(0xe166, fontFamily: familyRound, fontPackage: package); + static const IconData person_walk_round = IconData(0xe16a, fontFamily: familyRound, fontPackage: package); ///
Phone Android icon (round)
- static const IconData phone_android_round = IconData(0xe167, fontFamily: familyRound, fontPackage: package); + static const IconData phone_android_round = IconData(0xe16b, fontFamily: familyRound, fontPackage: package); ///
Phone Bluetooth Speaker icon (round)
- static const IconData phone_bluetooth_speaker_round = IconData(0xe168, fontFamily: familyRound, fontPackage: package); + static const IconData phone_bluetooth_speaker_round = IconData(0xe16c, fontFamily: familyRound, fontPackage: package); ///
Phone In Talk icon (round)
- static const IconData phone_in_talk_round = IconData(0xe169, fontFamily: familyRound, fontPackage: package); + static const IconData phone_in_talk_round = IconData(0xe16d, fontFamily: familyRound, fontPackage: package); ///
Phone Iphone icon (round)
- static const IconData phone_iphone_round = IconData(0xe16a, fontFamily: familyRound, fontPackage: package); + static const IconData phone_iphone_round = IconData(0xe16e, fontFamily: familyRound, fontPackage: package); ///
Phone icon (round)
- static const IconData phone_round = IconData(0xe16b, fontFamily: familyRound, fontPackage: package); + static const IconData phone_round = IconData(0xe16f, fontFamily: familyRound, fontPackage: package); ///
Phonelink icon (round)
- static const IconData phonelink_round = IconData(0xe16c, fontFamily: familyRound, fontPackage: package); + static const IconData phonelink_round = IconData(0xe170, fontFamily: familyRound, fontPackage: package); ///
Phrase icon (round)
- static const IconData phrase_round = IconData(0xe16d, fontFamily: familyRound, fontPackage: package); + static const IconData phrase_round = IconData(0xe171, fontFamily: familyRound, fontPackage: package); ///
Pin icon (round)
- static const IconData pin_round = IconData(0xe16e, fontFamily: familyRound, fontPackage: package); + static const IconData pin_round = IconData(0xe172, fontFamily: familyRound, fontPackage: package); ///
Place icon (round)
- static const IconData place_round = IconData(0xe16f, fontFamily: familyRound, fontPackage: package); + static const IconData place_round = IconData(0xe173, fontFamily: familyRound, fontPackage: package); ///
Planogram icon (round)
- static const IconData planogram_round = IconData(0xe170, fontFamily: familyRound, fontPackage: package); + static const IconData planogram_round = IconData(0xe174, fontFamily: familyRound, fontPackage: package); ///
Play Circle icon (round)
- static const IconData play_circle_round = IconData(0xe171, fontFamily: familyRound, fontPackage: package); + static const IconData play_circle_round = IconData(0xe175, fontFamily: familyRound, fontPackage: package); ///
Play Outline icon (round)
- static const IconData play_outline_round = IconData(0xe172, fontFamily: familyRound, fontPackage: package); + static const IconData play_outline_round = IconData(0xe176, fontFamily: familyRound, fontPackage: package); ///
Play icon (round)
- static const IconData play_round = IconData(0xe173, fontFamily: familyRound, fontPackage: package); + static const IconData play_round = IconData(0xe177, fontFamily: familyRound, fontPackage: package); ///
Png Attach icon (round)
- static const IconData png_attach_round = IconData(0xe174, fontFamily: familyRound, fontPackage: package); + static const IconData png_attach_round = IconData(0xe178, fontFamily: familyRound, fontPackage: package); ///
Point Gift icon (round)
- static const IconData point_gift_round = IconData(0xe175, fontFamily: familyRound, fontPackage: package); + static const IconData point_gift_round = IconData(0xe179, fontFamily: familyRound, fontPackage: package); ///
Point Heart icon (round)
- static const IconData point_heart_round = IconData(0xe176, fontFamily: familyRound, fontPackage: package); + static const IconData point_heart_round = IconData(0xe17a, fontFamily: familyRound, fontPackage: package); ///
Point Money icon (round)
- static const IconData point_money_round = IconData(0xe177, fontFamily: familyRound, fontPackage: package); + static const IconData point_money_round = IconData(0xe17b, fontFamily: familyRound, fontPackage: package); ///
Point Star icon (round)
- static const IconData point_star_round = IconData(0xe178, fontFamily: familyRound, fontPackage: package); + static const IconData point_star_round = IconData(0xe17c, fontFamily: familyRound, fontPackage: package); ///
Point Token icon (round)
- static const IconData point_token_round = IconData(0xe179, fontFamily: familyRound, fontPackage: package); + static const IconData point_token_round = IconData(0xe17d, fontFamily: familyRound, fontPackage: package); ///
Portrait icon (round)
- static const IconData portrait_round = IconData(0xe17a, fontFamily: familyRound, fontPackage: package); + static const IconData portrait_round = IconData(0xe17e, fontFamily: familyRound, fontPackage: package); ///
Ppt Attach icon (round)
- static const IconData ppt_attach_round = IconData(0xe17b, fontFamily: familyRound, fontPackage: package); + static const IconData ppt_attach_round = IconData(0xe17f, fontFamily: familyRound, fontPackage: package); ///
Price icon (round)
- static const IconData price_round = IconData(0xe17c, fontFamily: familyRound, fontPackage: package); + static const IconData price_round = IconData(0xe180, fontFamily: familyRound, fontPackage: package); ///
Printer icon (round)
- static const IconData printer_round = IconData(0xe17d, fontFamily: familyRound, fontPackage: package); + static const IconData printer_round = IconData(0xe181, fontFamily: familyRound, fontPackage: package); ///
Priority icon (round)
- static const IconData priority_round = IconData(0xe17e, fontFamily: familyRound, fontPackage: package); + static const IconData priority_round = IconData(0xe182, fontFamily: familyRound, fontPackage: package); ///
Pro icon (round)
- static const IconData pro_round = IconData(0xe17f, fontFamily: familyRound, fontPackage: package); + static const IconData pro_round = IconData(0xe183, fontFamily: familyRound, fontPackage: package); ///
Productivity Apps icon (round)
- static const IconData productivity_apps_round = IconData(0xe180, fontFamily: familyRound, fontPackage: package); + static const IconData productivity_apps_round = IconData(0xe184, fontFamily: familyRound, fontPackage: package); ///
Ptt icon (round)
- static const IconData ptt_round = IconData(0xe181, fontFamily: familyRound, fontPackage: package); + static const IconData ptt_round = IconData(0xe185, fontFamily: familyRound, fontPackage: package); ///
Publish icon (round)
- static const IconData publish_round = IconData(0xe182, fontFamily: familyRound, fontPackage: package); + static const IconData publish_round = IconData(0xe186, fontFamily: familyRound, fontPackage: package); + + ///
Push Pin Off icon (round)
+ static const IconData push_pin_off_round = IconData(0xe187, fontFamily: familyRound, fontPackage: package); ///
Push Pin icon (round)
- static const IconData push_pin_round = IconData(0xe183, fontFamily: familyRound, fontPackage: package); + static const IconData push_pin_round = IconData(0xe188, fontFamily: familyRound, fontPackage: package); ///
Qr Code icon (round)
- static const IconData qr_code_round = IconData(0xe184, fontFamily: familyRound, fontPackage: package); + static const IconData qr_code_round = IconData(0xe189, fontFamily: familyRound, fontPackage: package); ///
Queue icon (round)
- static const IconData queue_round = IconData(0xe185, fontFamily: familyRound, fontPackage: package); + static const IconData queue_round = IconData(0xe18a, fontFamily: familyRound, fontPackage: package); ///
Radio Button Checked icon (round)
- static const IconData radio_button_checked_round = IconData(0xe186, fontFamily: familyRound, fontPackage: package); + static const IconData radio_button_checked_round = IconData(0xe18b, fontFamily: familyRound, fontPackage: package); ///
Radio Button Unchecked icon (round)
- static const IconData radio_button_unchecked_round = IconData(0xe187, fontFamily: familyRound, fontPackage: package); + static const IconData radio_button_unchecked_round = IconData(0xe18c, fontFamily: familyRound, fontPackage: package); ///
React Add icon (round)
- static const IconData react_add_round = IconData(0xe188, fontFamily: familyRound, fontPackage: package); + static const IconData react_add_round = IconData(0xe18d, fontFamily: familyRound, fontPackage: package); ///
React Thumbsup icon (round)
- static const IconData react_thumbsup_round = IconData(0xe189, fontFamily: familyRound, fontPackage: package); + static const IconData react_thumbsup_round = IconData(0xe18e, fontFamily: familyRound, fontPackage: package); ///
Recall icon (round)
- static const IconData recall_round = IconData(0xe18a, fontFamily: familyRound, fontPackage: package); + static const IconData recall_round = IconData(0xe18f, fontFamily: familyRound, fontPackage: package); ///
Receipt icon (round)
- static const IconData receipt_round = IconData(0xe18b, fontFamily: familyRound, fontPackage: package); + static const IconData receipt_round = IconData(0xe190, fontFamily: familyRound, fontPackage: package); ///
Recording icon (round)
- static const IconData recording_round = IconData(0xe18c, fontFamily: familyRound, fontPackage: package); + static const IconData recording_round = IconData(0xe191, fontFamily: familyRound, fontPackage: package); ///
Redo icon (round)
- static const IconData redo_round = IconData(0xe18d, fontFamily: familyRound, fontPackage: package); + static const IconData redo_round = IconData(0xe192, fontFamily: familyRound, fontPackage: package); ///
Refresh icon (round)
- static const IconData refresh_round = IconData(0xe18e, fontFamily: familyRound, fontPackage: package); + static const IconData refresh_round = IconData(0xe193, fontFamily: familyRound, fontPackage: package); ///
Remove Box icon (round)
- static const IconData remove_box_round = IconData(0xe18f, fontFamily: familyRound, fontPackage: package); + static const IconData remove_box_round = IconData(0xe194, fontFamily: familyRound, fontPackage: package); ///
Remove Circle Outline icon (round)
- static const IconData remove_circle_outline_round = IconData(0xe190, fontFamily: familyRound, fontPackage: package); + static const IconData remove_circle_outline_round = IconData(0xe195, fontFamily: familyRound, fontPackage: package); ///
Remove Circle icon (round)
- static const IconData remove_circle_round = IconData(0xe191, fontFamily: familyRound, fontPackage: package); + static const IconData remove_circle_round = IconData(0xe196, fontFamily: familyRound, fontPackage: package); ///
Remove Group icon (round)
- static const IconData remove_group_round = IconData(0xe192, fontFamily: familyRound, fontPackage: package); + static const IconData remove_group_round = IconData(0xe197, fontFamily: familyRound, fontPackage: package); ///
Remove Person icon (round)
- static const IconData remove_person_round = IconData(0xe193, fontFamily: familyRound, fontPackage: package); + static const IconData remove_person_round = IconData(0xe198, fontFamily: familyRound, fontPackage: package); ///
Remove icon (round)
- static const IconData remove_round = IconData(0xe194, fontFamily: familyRound, fontPackage: package); + static const IconData remove_round = IconData(0xe199, fontFamily: familyRound, fontPackage: package); ///
Renew icon (round)
- static const IconData renew_round = IconData(0xe195, fontFamily: familyRound, fontPackage: package); + static const IconData renew_round = IconData(0xe19a, fontFamily: familyRound, fontPackage: package); ///
Reorder icon (round)
- static const IconData reorder_round = IconData(0xe196, fontFamily: familyRound, fontPackage: package); + static const IconData reorder_round = IconData(0xe19b, fontFamily: familyRound, fontPackage: package); ///
Repeat icon (round)
- static const IconData repeat_round = IconData(0xe197, fontFamily: familyRound, fontPackage: package); + static const IconData repeat_round = IconData(0xe19c, fontFamily: familyRound, fontPackage: package); ///
Replay icon (round)
- static const IconData replay_round = IconData(0xe198, fontFamily: familyRound, fontPackage: package); + static const IconData replay_round = IconData(0xe19d, fontFamily: familyRound, fontPackage: package); ///
Reply icon (round)
- static const IconData reply_round = IconData(0xe199, fontFamily: familyRound, fontPackage: package); + static const IconData reply_round = IconData(0xe19e, fontFamily: familyRound, fontPackage: package); ///
Report icon (round)
- static const IconData report_round = IconData(0xe19a, fontFamily: familyRound, fontPackage: package); + static const IconData report_round = IconData(0xe19f, fontFamily: familyRound, fontPackage: package); ///
Restart Alt icon (round)
- static const IconData restart_alt_round = IconData(0xe19b, fontFamily: familyRound, fontPackage: package); + static const IconData restart_alt_round = IconData(0xe1a0, fontFamily: familyRound, fontPackage: package); ///
Review icon (round)
- static const IconData review_round = IconData(0xe19c, fontFamily: familyRound, fontPackage: package); + static const IconData review_round = IconData(0xe1a1, fontFamily: familyRound, fontPackage: package); ///
Road Map icon (round)
- static const IconData road_map_round = IconData(0xe19d, fontFamily: familyRound, fontPackage: package); + static const IconData road_map_round = IconData(0xe1a2, fontFamily: familyRound, fontPackage: package); ///
Rotate Left icon (round)
- static const IconData rotate_left_round = IconData(0xe19e, fontFamily: familyRound, fontPackage: package); + static const IconData rotate_left_round = IconData(0xe1a3, fontFamily: familyRound, fontPackage: package); ///
Rotate Right icon (round)
- static const IconData rotate_right_round = IconData(0xe19f, fontFamily: familyRound, fontPackage: package); + static const IconData rotate_right_round = IconData(0xe1a4, fontFamily: familyRound, fontPackage: package); ///
Rss Feed icon (round)
- static const IconData rss_feed_round = IconData(0xe1a0, fontFamily: familyRound, fontPackage: package); + static const IconData rss_feed_round = IconData(0xe1a5, fontFamily: familyRound, fontPackage: package); ///
Rules icon (round)
- static const IconData rules_round = IconData(0xe1a1, fontFamily: familyRound, fontPackage: package); + static const IconData rules_round = IconData(0xe1a6, fontFamily: familyRound, fontPackage: package); ///
Sad icon (round)
- static const IconData sad_round = IconData(0xe1a2, fontFamily: familyRound, fontPackage: package); + static const IconData sad_round = IconData(0xe1a7, fontFamily: familyRound, fontPackage: package); ///
Satisfied icon (round)
- static const IconData satisfied_round = IconData(0xe1a3, fontFamily: familyRound, fontPackage: package); + static const IconData satisfied_round = IconData(0xe1a8, fontFamily: familyRound, fontPackage: package); ///
Save Alt icon (round)
- static const IconData save_alt_round = IconData(0xe1a4, fontFamily: familyRound, fontPackage: package); + static const IconData save_alt_round = IconData(0xe1a9, fontFamily: familyRound, fontPackage: package); ///
Save Content icon (round)
- static const IconData save_content_round = IconData(0xe1a5, fontFamily: familyRound, fontPackage: package); + static const IconData save_content_round = IconData(0xe1aa, fontFamily: familyRound, fontPackage: package); ///
Save icon (round)
- static const IconData save_round = IconData(0xe1a6, fontFamily: familyRound, fontPackage: package); + static const IconData save_round = IconData(0xe1ab, fontFamily: familyRound, fontPackage: package); ///
Scan Rate icon (round)
- static const IconData scan_rate_round = IconData(0xe1a7, fontFamily: familyRound, fontPackage: package); + static const IconData scan_rate_round = IconData(0xe1ac, fontFamily: familyRound, fontPackage: package); ///
Scanner icon (round)
- static const IconData scanner_round = IconData(0xe1a8, fontFamily: familyRound, fontPackage: package); + static const IconData scanner_round = IconData(0xe1ad, fontFamily: familyRound, fontPackage: package); ///
Schedule icon (round)
- static const IconData schedule_round = IconData(0xe1a9, fontFamily: familyRound, fontPackage: package); + static const IconData schedule_round = IconData(0xe1ae, fontFamily: familyRound, fontPackage: package); ///
School icon (round)
- static const IconData school_round = IconData(0xe1aa, fontFamily: familyRound, fontPackage: package); + static const IconData school_round = IconData(0xe1af, fontFamily: familyRound, fontPackage: package); ///
Screen Rotation icon (round)
- static const IconData screen_rotation_round = IconData(0xe1ab, fontFamily: familyRound, fontPackage: package); + static const IconData screen_rotation_round = IconData(0xe1b0, fontFamily: familyRound, fontPackage: package); ///
Sd Card icon (round)
- static const IconData sd_card_round = IconData(0xe1ac, fontFamily: familyRound, fontPackage: package); + static const IconData sd_card_round = IconData(0xe1b1, fontFamily: familyRound, fontPackage: package); ///
Search icon (round)
- static const IconData search_round = IconData(0xe1ad, fontFamily: familyRound, fontPackage: package); + static const IconData search_round = IconData(0xe1b2, fontFamily: familyRound, fontPackage: package); ///
Security Check icon (round)
- static const IconData security_check_round = IconData(0xe1ae, fontFamily: familyRound, fontPackage: package); + static const IconData security_check_round = IconData(0xe1b3, fontFamily: familyRound, fontPackage: package); ///
Security icon (round)
- static const IconData security_round = IconData(0xe1af, fontFamily: familyRound, fontPackage: package); + static const IconData security_round = IconData(0xe1b4, fontFamily: familyRound, fontPackage: package); ///
Send icon (round)
- static const IconData send_round = IconData(0xe1b0, fontFamily: familyRound, fontPackage: package); + static const IconData send_round = IconData(0xe1b5, fontFamily: familyRound, fontPackage: package); ///
Settings icon (round)
- static const IconData settings_round = IconData(0xe1b1, fontFamily: familyRound, fontPackage: package); + static const IconData settings_round = IconData(0xe1b6, fontFamily: familyRound, fontPackage: package); ///
Shape Recognition icon (round)
- static const IconData shape_recognition_round = IconData(0xe1b2, fontFamily: familyRound, fontPackage: package); + static const IconData shape_recognition_round = IconData(0xe1b7, fontFamily: familyRound, fontPackage: package); ///
Share icon (round)
- static const IconData share_round = IconData(0xe1b3, fontFamily: familyRound, fontPackage: package); + static const IconData share_round = IconData(0xe1b8, fontFamily: familyRound, fontPackage: package); ///
Shared Folder icon (round)
- static const IconData shared_folder_round = IconData(0xe1b4, fontFamily: familyRound, fontPackage: package); + static const IconData shared_folder_round = IconData(0xe1b9, fontFamily: familyRound, fontPackage: package); ///
Ship icon (round)
- static const IconData ship_round = IconData(0xe1b5, fontFamily: familyRound, fontPackage: package); + static const IconData ship_round = IconData(0xe1ba, fontFamily: familyRound, fontPackage: package); ///
Sim Card icon (round)
- static const IconData sim_card_round = IconData(0xe1b6, fontFamily: familyRound, fontPackage: package); + static const IconData sim_card_round = IconData(0xe1bb, fontFamily: familyRound, fontPackage: package); ///
Skip Next icon (round)
- static const IconData skip_next_round = IconData(0xe1b7, fontFamily: familyRound, fontPackage: package); + static const IconData skip_next_round = IconData(0xe1bc, fontFamily: familyRound, fontPackage: package); ///
Skip Previous icon (round)
- static const IconData skip_previous_round = IconData(0xe1b8, fontFamily: familyRound, fontPackage: package); + static const IconData skip_previous_round = IconData(0xe1bd, fontFamily: familyRound, fontPackage: package); ///
Slide Show icon (round)
- static const IconData slide_show_round = IconData(0xe1b9, fontFamily: familyRound, fontPackage: package); + static const IconData slide_show_round = IconData(0xe1be, fontFamily: familyRound, fontPackage: package); ///
Smart Phone icon (round)
- static const IconData smart_phone_round = IconData(0xe1ba, fontFamily: familyRound, fontPackage: package); + static const IconData smart_phone_round = IconData(0xe1bf, fontFamily: familyRound, fontPackage: package); ///
Sms icon (round)
- static const IconData sms_round = IconData(0xe1bb, fontFamily: familyRound, fontPackage: package); + static const IconData sms_round = IconData(0xe1c0, fontFamily: familyRound, fontPackage: package); ///
Snooze icon (round)
- static const IconData snooze_round = IconData(0xe1bc, fontFamily: familyRound, fontPackage: package); + static const IconData snooze_round = IconData(0xe1c1, fontFamily: familyRound, fontPackage: package); ///
Solutions icon (round)
- static const IconData solutions_round = IconData(0xe1bd, fontFamily: familyRound, fontPackage: package); + static const IconData solutions_round = IconData(0xe1c2, fontFamily: familyRound, fontPackage: package); ///
Sort Content icon (round)
- static const IconData sort_content_round = IconData(0xe1be, fontFamily: familyRound, fontPackage: package); + static const IconData sort_content_round = IconData(0xe1c3, fontFamily: familyRound, fontPackage: package); ///
Sort icon (round)
- static const IconData sort_round = IconData(0xe1bf, fontFamily: familyRound, fontPackage: package); + static const IconData sort_round = IconData(0xe1c4, fontFamily: familyRound, fontPackage: package); ///
Speaker icon (round)
- static const IconData speaker_round = IconData(0xe1c0, fontFamily: familyRound, fontPackage: package); + static const IconData speaker_round = IconData(0xe1c5, fontFamily: familyRound, fontPackage: package); ///
Star Half icon (round)
- static const IconData star_half_round = IconData(0xe1c1, fontFamily: familyRound, fontPackage: package); + static const IconData star_half_round = IconData(0xe1c6, fontFamily: familyRound, fontPackage: package); ///
Star Outline icon (round)
- static const IconData star_outline_round = IconData(0xe1c2, fontFamily: familyRound, fontPackage: package); + static const IconData star_outline_round = IconData(0xe1c7, fontFamily: familyRound, fontPackage: package); ///
Star icon (round)
- static const IconData star_round = IconData(0xe1c3, fontFamily: familyRound, fontPackage: package); + static const IconData star_round = IconData(0xe1c8, fontFamily: familyRound, fontPackage: package); ///
Steps icon (round)
- static const IconData steps_round = IconData(0xe1c4, fontFamily: familyRound, fontPackage: package); + static const IconData steps_round = IconData(0xe1c9, fontFamily: familyRound, fontPackage: package); ///
Sticker icon (round)
- static const IconData sticker_round = IconData(0xe1c5, fontFamily: familyRound, fontPackage: package); + static const IconData sticker_round = IconData(0xe1ca, fontFamily: familyRound, fontPackage: package); ///
Stop Circle icon (round)
- static const IconData stop_circle_round = IconData(0xe1c6, fontFamily: familyRound, fontPackage: package); + static const IconData stop_circle_round = IconData(0xe1cb, fontFamily: familyRound, fontPackage: package); ///
Stop icon (round)
- static const IconData stop_round = IconData(0xe1c7, fontFamily: familyRound, fontPackage: package); + static const IconData stop_round = IconData(0xe1cc, fontFamily: familyRound, fontPackage: package); ///
Store Release icon (round)
- static const IconData store_release_round = IconData(0xe1c8, fontFamily: familyRound, fontPackage: package); + static const IconData store_release_round = IconData(0xe1cd, fontFamily: familyRound, fontPackage: package); ///
Store icon (round)
- static const IconData store_round = IconData(0xe1c9, fontFamily: familyRound, fontPackage: package); + static const IconData store_round = IconData(0xe1ce, fontFamily: familyRound, fontPackage: package); ///
Store Swap icon (round)
- static const IconData store_swap_round = IconData(0xe1ca, fontFamily: familyRound, fontPackage: package); + static const IconData store_swap_round = IconData(0xe1cf, fontFamily: familyRound, fontPackage: package); ///
Store Transfer icon (round)
- static const IconData store_transfer_round = IconData(0xe1cb, fontFamily: familyRound, fontPackage: package); + static const IconData store_transfer_round = IconData(0xe1d0, fontFamily: familyRound, fontPackage: package); ///
Straighten icon (round)
- static const IconData straighten_round = IconData(0xe1cc, fontFamily: familyRound, fontPackage: package); + static const IconData straighten_round = IconData(0xe1d1, fontFamily: familyRound, fontPackage: package); ///
Strategy icon (round)
- static const IconData strategy_round = IconData(0xe1cd, fontFamily: familyRound, fontPackage: package); + static const IconData strategy_round = IconData(0xe1d2, fontFamily: familyRound, fontPackage: package); ///
Strikethrough icon (round)
- static const IconData strikethrough_round = IconData(0xe1ce, fontFamily: familyRound, fontPackage: package); + static const IconData strikethrough_round = IconData(0xe1d3, fontFamily: familyRound, fontPackage: package); ///
Subscribe icon (round)
- static const IconData subscribe_round = IconData(0xe1cf, fontFamily: familyRound, fontPackage: package); + static const IconData subscribe_round = IconData(0xe1d4, fontFamily: familyRound, fontPackage: package); ///
Swap icon (round)
- static const IconData swap_round = IconData(0xe1d0, fontFamily: familyRound, fontPackage: package); + static const IconData swap_round = IconData(0xe1d5, fontFamily: familyRound, fontPackage: package); ///
Switch User icon (round)
- static const IconData switch_user_round = IconData(0xe1d1, fontFamily: familyRound, fontPackage: package); + static const IconData switch_user_round = IconData(0xe1d6, fontFamily: familyRound, fontPackage: package); ///
Sync Action icon (round)
- static const IconData sync_action_round = IconData(0xe1d2, fontFamily: familyRound, fontPackage: package); + static const IconData sync_action_round = IconData(0xe1d7, fontFamily: familyRound, fontPackage: package); ///
Sync Disabled icon (round)
- static const IconData sync_disabled_round = IconData(0xe1d3, fontFamily: familyRound, fontPackage: package); + static const IconData sync_disabled_round = IconData(0xe1d8, fontFamily: familyRound, fontPackage: package); ///
Sync icon (round)
- static const IconData sync_round = IconData(0xe1d4, fontFamily: familyRound, fontPackage: package); + static const IconData sync_round = IconData(0xe1d9, fontFamily: familyRound, fontPackage: package); ///
Table icon (round)
- static const IconData table_round = IconData(0xe1d5, fontFamily: familyRound, fontPackage: package); + static const IconData table_round = IconData(0xe1da, fontFamily: familyRound, fontPackage: package); ///
Tablet Mac icon (round)
- static const IconData tablet_mac_round = IconData(0xe1d6, fontFamily: familyRound, fontPackage: package); + static const IconData tablet_mac_round = IconData(0xe1db, fontFamily: familyRound, fontPackage: package); ///
Tablet icon (round)
- static const IconData tablet_round = IconData(0xe1d7, fontFamily: familyRound, fontPackage: package); + static const IconData tablet_round = IconData(0xe1dc, fontFamily: familyRound, fontPackage: package); ///
Tag Enterprise icon (round)
- static const IconData tag_enterprise_round = IconData(0xe1d8, fontFamily: familyRound, fontPackage: package); + static const IconData tag_enterprise_round = IconData(0xe1dd, fontFamily: familyRound, fontPackage: package); ///
Tag icon (round)
- static const IconData tag_round = IconData(0xe1d9, fontFamily: familyRound, fontPackage: package); + static const IconData tag_round = IconData(0xe1de, fontFamily: familyRound, fontPackage: package); ///
Tap To Pay icon (round)
- static const IconData tap_to_pay_round = IconData(0xe1da, fontFamily: familyRound, fontPackage: package); + static const IconData tap_to_pay_round = IconData(0xe1df, fontFamily: familyRound, fontPackage: package); ///
Taxi icon (round)
- static const IconData taxi_round = IconData(0xe1db, fontFamily: familyRound, fontPackage: package); + static const IconData taxi_round = IconData(0xe1e0, fontFamily: familyRound, fontPackage: package); ///
Text Color icon (round)
- static const IconData text_color_round = IconData(0xe1dc, fontFamily: familyRound, fontPackage: package); + static const IconData text_color_round = IconData(0xe1e1, fontFamily: familyRound, fontPackage: package); ///
Tiers icon (round)
- static const IconData tiers_round = IconData(0xe1dd, fontFamily: familyRound, fontPackage: package); + static const IconData tiers_round = IconData(0xe1e2, fontFamily: familyRound, fontPackage: package); ///
Timecard Approve icon (round)
- static const IconData timecard_approve_round = IconData(0xe1de, fontFamily: familyRound, fontPackage: package); + static const IconData timecard_approve_round = IconData(0xe1e3, fontFamily: familyRound, fontPackage: package); ///
Timecard icon (round)
- static const IconData timecard_round = IconData(0xe1df, fontFamily: familyRound, fontPackage: package); + static const IconData timecard_round = IconData(0xe1e4, fontFamily: familyRound, fontPackage: package); ///
Timecard Warning icon (round)
- static const IconData timecard_warning_round = IconData(0xe1e0, fontFamily: familyRound, fontPackage: package); + static const IconData timecard_warning_round = IconData(0xe1e5, fontFamily: familyRound, fontPackage: package); ///
Timer icon (round)
- static const IconData timer_round = IconData(0xe1e1, fontFamily: familyRound, fontPackage: package); + static const IconData timer_round = IconData(0xe1e6, fontFamily: familyRound, fontPackage: package); ///
Toggle Off icon (round)
- static const IconData toggle_off_round = IconData(0xe1e2, fontFamily: familyRound, fontPackage: package); + static const IconData toggle_off_round = IconData(0xe1e7, fontFamily: familyRound, fontPackage: package); ///
Toggle On icon (round)
- static const IconData toggle_on_round = IconData(0xe1e3, fontFamily: familyRound, fontPackage: package); + static const IconData toggle_on_round = IconData(0xe1e8, fontFamily: familyRound, fontPackage: package); ///
Touch icon (round)
- static const IconData touch_round = IconData(0xe1e4, fontFamily: familyRound, fontPackage: package); + static const IconData touch_round = IconData(0xe1e9, fontFamily: familyRound, fontPackage: package); ///
Train icon (round)
- static const IconData train_round = IconData(0xe1e5, fontFamily: familyRound, fontPackage: package); + static const IconData train_round = IconData(0xe1ea, fontFamily: familyRound, fontPackage: package); ///
Transfer icon (round)
- static const IconData transfer_round = IconData(0xe1e6, fontFamily: familyRound, fontPackage: package); + static const IconData transfer_round = IconData(0xe1eb, fontFamily: familyRound, fontPackage: package); ///
Trending Down icon (round)
- static const IconData trending_down_round = IconData(0xe1e7, fontFamily: familyRound, fontPackage: package); + static const IconData trending_down_round = IconData(0xe1ec, fontFamily: familyRound, fontPackage: package); ///
Trending Up icon (round)
- static const IconData trending_up_round = IconData(0xe1e8, fontFamily: familyRound, fontPackage: package); + static const IconData trending_up_round = IconData(0xe1ed, fontFamily: familyRound, fontPackage: package); ///
Tv icon (round)
- static const IconData tv_round = IconData(0xe1e9, fontFamily: familyRound, fontPackage: package); + static const IconData tv_round = IconData(0xe1ee, fontFamily: familyRound, fontPackage: package); ///
Twitter icon (round)
- static const IconData twitter_round = IconData(0xe1ea, fontFamily: familyRound, fontPackage: package); + static const IconData twitter_round = IconData(0xe1ef, fontFamily: familyRound, fontPackage: package); ///
Type icon (round)
- static const IconData type_round = IconData(0xe1eb, fontFamily: familyRound, fontPackage: package); + static const IconData type_round = IconData(0xe1f0, fontFamily: familyRound, fontPackage: package); ///
Uhf Rfid icon (round)
- static const IconData uhf_rfid_round = IconData(0xe1ec, fontFamily: familyRound, fontPackage: package); + static const IconData uhf_rfid_round = IconData(0xe1f1, fontFamily: familyRound, fontPackage: package); ///
Underline icon (round)
- static const IconData underline_round = IconData(0xe1ed, fontFamily: familyRound, fontPackage: package); + static const IconData underline_round = IconData(0xe1f2, fontFamily: familyRound, fontPackage: package); ///
Undo icon (round)
- static const IconData undo_round = IconData(0xe1ee, fontFamily: familyRound, fontPackage: package); + static const IconData undo_round = IconData(0xe1f3, fontFamily: familyRound, fontPackage: package); ///
Unfold Less icon (round)
- static const IconData unfold_less_round = IconData(0xe1ef, fontFamily: familyRound, fontPackage: package); + static const IconData unfold_less_round = IconData(0xe1f4, fontFamily: familyRound, fontPackage: package); ///
Unfold More icon (round)
- static const IconData unfold_more_round = IconData(0xe1f0, fontFamily: familyRound, fontPackage: package); + static const IconData unfold_more_round = IconData(0xe1f5, fontFamily: familyRound, fontPackage: package); ///
Unlock Alt icon (round)
- static const IconData unlock_alt_round = IconData(0xe1f1, fontFamily: familyRound, fontPackage: package); + static const IconData unlock_alt_round = IconData(0xe1f6, fontFamily: familyRound, fontPackage: package); ///
Unlock icon (round)
- static const IconData unlock_round = IconData(0xe1f2, fontFamily: familyRound, fontPackage: package); + static const IconData unlock_round = IconData(0xe1f7, fontFamily: familyRound, fontPackage: package); ///
Unsubscribe icon (round)
- static const IconData unsubscribe_round = IconData(0xe1f3, fontFamily: familyRound, fontPackage: package); + static const IconData unsubscribe_round = IconData(0xe1f8, fontFamily: familyRound, fontPackage: package); ///
Update icon (round)
- static const IconData update_round = IconData(0xe1f4, fontFamily: familyRound, fontPackage: package); + static const IconData update_round = IconData(0xe1f9, fontFamily: familyRound, fontPackage: package); ///
Upload File icon (round)
- static const IconData upload_file_round = IconData(0xe1f5, fontFamily: familyRound, fontPackage: package); + static const IconData upload_file_round = IconData(0xe1fa, fontFamily: familyRound, fontPackage: package); ///
Upload icon (round)
- static const IconData upload_round = IconData(0xe1f6, fontFamily: familyRound, fontPackage: package); + static const IconData upload_round = IconData(0xe1fb, fontFamily: familyRound, fontPackage: package); ///
Usb Alt Device icon (round)
- static const IconData usb_alt_device_round = IconData(0xe1f7, fontFamily: familyRound, fontPackage: package); + static const IconData usb_alt_device_round = IconData(0xe1fc, fontFamily: familyRound, fontPackage: package); ///
Usb Alt icon (round)
- static const IconData usb_alt_round = IconData(0xe1f8, fontFamily: familyRound, fontPackage: package); + static const IconData usb_alt_round = IconData(0xe1fd, fontFamily: familyRound, fontPackage: package); ///
Usb icon (round)
- static const IconData usb_round = IconData(0xe1f9, fontFamily: familyRound, fontPackage: package); + static const IconData usb_round = IconData(0xe1fe, fontFamily: familyRound, fontPackage: package); ///
User Circle icon (round)
- static const IconData user_circle_round = IconData(0xe1fa, fontFamily: familyRound, fontPackage: package); + static const IconData user_circle_round = IconData(0xe1ff, fontFamily: familyRound, fontPackage: package); ///
User Minor icon (round)
- static const IconData user_minor_round = IconData(0xe1fb, fontFamily: familyRound, fontPackage: package); + static const IconData user_minor_round = IconData(0xe200, fontFamily: familyRound, fontPackage: package); ///
User icon (round)
- static const IconData user_round = IconData(0xe1fc, fontFamily: familyRound, fontPackage: package); + static const IconData user_round = IconData(0xe201, fontFamily: familyRound, fontPackage: package); ///
User Settings icon (round)
- static const IconData user_settings_round = IconData(0xe1fd, fontFamily: familyRound, fontPackage: package); + static const IconData user_settings_round = IconData(0xe202, fontFamily: familyRound, fontPackage: package); ///
Vacation icon (round)
- static const IconData vacation_round = IconData(0xe1fe, fontFamily: familyRound, fontPackage: package); + static const IconData vacation_round = IconData(0xe203, fontFamily: familyRound, fontPackage: package); ///
Verified icon (round)
- static const IconData verified_round = IconData(0xe1ff, fontFamily: familyRound, fontPackage: package); + static const IconData verified_round = IconData(0xe204, fontFamily: familyRound, fontPackage: package); ///
Very Satisfied icon (round)
- static const IconData very_satisfied_round = IconData(0xe200, fontFamily: familyRound, fontPackage: package); + static const IconData very_satisfied_round = IconData(0xe205, fontFamily: familyRound, fontPackage: package); ///
Video Camera icon (round)
- static const IconData video_camera_round = IconData(0xe201, fontFamily: familyRound, fontPackage: package); + static const IconData video_camera_round = IconData(0xe206, fontFamily: familyRound, fontPackage: package); ///
Video Off icon (round)
- static const IconData video_off_round = IconData(0xe202, fontFamily: familyRound, fontPackage: package); + static const IconData video_off_round = IconData(0xe207, fontFamily: familyRound, fontPackage: package); ///
Video Play icon (round)
- static const IconData video_play_round = IconData(0xe203, fontFamily: familyRound, fontPackage: package); + static const IconData video_play_round = IconData(0xe208, fontFamily: familyRound, fontPackage: package); ///
Video icon (round)
- static const IconData video_round = IconData(0xe204, fontFamily: familyRound, fontPackage: package); + static const IconData video_round = IconData(0xe209, fontFamily: familyRound, fontPackage: package); ///
Visibility Off icon (round)
- static const IconData visibility_off_round = IconData(0xe205, fontFamily: familyRound, fontPackage: package); + static const IconData visibility_off_round = IconData(0xe20a, fontFamily: familyRound, fontPackage: package); ///
Visibility icon (round)
- static const IconData visibility_round = IconData(0xe206, fontFamily: familyRound, fontPackage: package); + static const IconData visibility_round = IconData(0xe20b, fontFamily: familyRound, fontPackage: package); ///
Volte icon (round)
- static const IconData volte_round = IconData(0xe207, fontFamily: familyRound, fontPackage: package); + static const IconData volte_round = IconData(0xe20c, fontFamily: familyRound, fontPackage: package); ///
Volume Down icon (round)
- static const IconData volume_down_round = IconData(0xe208, fontFamily: familyRound, fontPackage: package); + static const IconData volume_down_round = IconData(0xe20d, fontFamily: familyRound, fontPackage: package); ///
Volume Mute icon (round)
- static const IconData volume_mute_round = IconData(0xe209, fontFamily: familyRound, fontPackage: package); + static const IconData volume_mute_round = IconData(0xe20e, fontFamily: familyRound, fontPackage: package); ///
Volume Off icon (round)
- static const IconData volume_off_round = IconData(0xe20a, fontFamily: familyRound, fontPackage: package); + static const IconData volume_off_round = IconData(0xe20f, fontFamily: familyRound, fontPackage: package); ///
Volume Up icon (round)
- static const IconData volume_up_round = IconData(0xe20b, fontFamily: familyRound, fontPackage: package); + static const IconData volume_up_round = IconData(0xe210, fontFamily: familyRound, fontPackage: package); ///
Warning Outline icon (round)
- static const IconData warning_outline_round = IconData(0xe20c, fontFamily: familyRound, fontPackage: package); + static const IconData warning_outline_round = IconData(0xe211, fontFamily: familyRound, fontPackage: package); ///
Warning icon (round)
- static const IconData warning_round = IconData(0xe20d, fontFamily: familyRound, fontPackage: package); + static const IconData warning_round = IconData(0xe212, fontFamily: familyRound, fontPackage: package); ///
Watch icon (round)
- static const IconData watch_round = IconData(0xe20e, fontFamily: familyRound, fontPackage: package); + static const IconData watch_round = IconData(0xe213, fontFamily: familyRound, fontPackage: package); ///
Wb Image icon (round)
- static const IconData wb_image_round = IconData(0xe20f, fontFamily: familyRound, fontPackage: package); + static const IconData wb_image_round = IconData(0xe214, fontFamily: familyRound, fontPackage: package); ///
Wb icon (round)
- static const IconData wb_round = IconData(0xe210, fontFamily: familyRound, fontPackage: package); + static const IconData wb_round = IconData(0xe215, fontFamily: familyRound, fontPackage: package); ///
World Action icon (round)
- static const IconData world_action_round = IconData(0xe211, fontFamily: familyRound, fontPackage: package); + static const IconData world_action_round = IconData(0xe216, fontFamily: familyRound, fontPackage: package); ///
World icon (round)
- static const IconData world_round = IconData(0xe212, fontFamily: familyRound, fontPackage: package); + static const IconData world_round = IconData(0xe217, fontFamily: familyRound, fontPackage: package); ///
Write icon (round)
- static const IconData write_round = IconData(0xe213, fontFamily: familyRound, fontPackage: package); + static const IconData write_round = IconData(0xe218, fontFamily: familyRound, fontPackage: package); ///
Youtube icon (round)
- static const IconData youtube_round = IconData(0xe214, fontFamily: familyRound, fontPackage: package); + static const IconData youtube_round = IconData(0xe219, fontFamily: familyRound, fontPackage: package); ///
Zero Scale icon (round)
- static const IconData zero_scale_round = IconData(0xe215, fontFamily: familyRound, fontPackage: package); + static const IconData zero_scale_round = IconData(0xe21a, fontFamily: familyRound, fontPackage: package); ///
Zoom In Map icon (round)
- static const IconData zoom_in_map_round = IconData(0xe216, fontFamily: familyRound, fontPackage: package); + static const IconData zoom_in_map_round = IconData(0xe21b, fontFamily: familyRound, fontPackage: package); ///
Zoom In icon (round)
- static const IconData zoom_in_round = IconData(0xe217, fontFamily: familyRound, fontPackage: package); + static const IconData zoom_in_round = IconData(0xe21c, fontFamily: familyRound, fontPackage: package); ///
Zoom Out Map icon (round)
- static const IconData zoom_out_map_round = IconData(0xe218, fontFamily: familyRound, fontPackage: package); + static const IconData zoom_out_map_round = IconData(0xe21d, fontFamily: familyRound, fontPackage: package); ///
Zoom Out icon (round)
- static const IconData zoom_out_round = IconData(0xe219, fontFamily: familyRound, fontPackage: package); + static const IconData zoom_out_round = IconData(0xe21e, fontFamily: familyRound, fontPackage: package); // Sharp Icons ///
Activity icon (sharp)
@@ -3762,1107 +3792,1122 @@ abstract class ZetaIcons { ///
Columns icon (sharp)
static const IconData columns_sharp = IconData(0xe0aa, fontFamily: familySharp, fontPackage: package); + ///
Comms Chat New icon (sharp)
+ static const IconData comms_chat_new_sharp = IconData(0xe0ab, fontFamily: familySharp, fontPackage: package); + + ///
Comms Chat icon (sharp)
+ static const IconData comms_chat_sharp = IconData(0xe0ac, fontFamily: familySharp, fontPackage: package); + + ///
Comms Chat Unread icon (sharp)
+ static const IconData comms_chat_unread_sharp = IconData(0xe0ad, fontFamily: familySharp, fontPackage: package); + ///
Contactless Pay icon (sharp)
- static const IconData contactless_pay_sharp = IconData(0xe0ab, fontFamily: familySharp, fontPackage: package); + static const IconData contactless_pay_sharp = IconData(0xe0ae, fontFamily: familySharp, fontPackage: package); ///
Content icon (sharp)
- static const IconData content_sharp = IconData(0xe0ac, fontFamily: familySharp, fontPackage: package); + static const IconData content_sharp = IconData(0xe0af, fontFamily: familySharp, fontPackage: package); ///
Contrast Image icon (sharp)
- static const IconData contrast_image_sharp = IconData(0xe0ad, fontFamily: familySharp, fontPackage: package); + static const IconData contrast_image_sharp = IconData(0xe0b0, fontFamily: familySharp, fontPackage: package); ///
Contrast icon (sharp)
- static const IconData contrast_sharp = IconData(0xe0ae, fontFamily: familySharp, fontPackage: package); + static const IconData contrast_sharp = IconData(0xe0b1, fontFamily: familySharp, fontPackage: package); ///
Conversation icon (sharp)
- static const IconData conversation_sharp = IconData(0xe0af, fontFamily: familySharp, fontPackage: package); + static const IconData conversation_sharp = IconData(0xe0b2, fontFamily: familySharp, fontPackage: package); ///
Copy File icon (sharp)
- static const IconData copy_file_sharp = IconData(0xe0b0, fontFamily: familySharp, fontPackage: package); + static const IconData copy_file_sharp = IconData(0xe0b3, fontFamily: familySharp, fontPackage: package); ///
Create New Folder icon (sharp)
- static const IconData create_new_folder_sharp = IconData(0xe0b1, fontFamily: familySharp, fontPackage: package); + static const IconData create_new_folder_sharp = IconData(0xe0b4, fontFamily: familySharp, fontPackage: package); ///
Credit Card icon (sharp)
- static const IconData credit_card_sharp = IconData(0xe0b2, fontFamily: familySharp, fontPackage: package); + static const IconData credit_card_sharp = IconData(0xe0b5, fontFamily: familySharp, fontPackage: package); ///
Credit Card Swipe icon (sharp)
- static const IconData credit_card_swipe_sharp = IconData(0xe0b3, fontFamily: familySharp, fontPackage: package); + static const IconData credit_card_swipe_sharp = IconData(0xe0b6, fontFamily: familySharp, fontPackage: package); ///
Crop icon (sharp)
- static const IconData crop_sharp = IconData(0xe0b4, fontFamily: familySharp, fontPackage: package); + static const IconData crop_sharp = IconData(0xe0b7, fontFamily: familySharp, fontPackage: package); ///
Dark Mode icon (sharp)
- static const IconData dark_mode_sharp = IconData(0xe0b5, fontFamily: familySharp, fontPackage: package); + static const IconData dark_mode_sharp = IconData(0xe0b8, fontFamily: familySharp, fontPackage: package); ///
Dashboard icon (sharp)
- static const IconData dashboard_sharp = IconData(0xe0b6, fontFamily: familySharp, fontPackage: package); + static const IconData dashboard_sharp = IconData(0xe0b9, fontFamily: familySharp, fontPackage: package); ///
Delete Forever icon (sharp)
- static const IconData delete_forever_sharp = IconData(0xe0b7, fontFamily: familySharp, fontPackage: package); + static const IconData delete_forever_sharp = IconData(0xe0ba, fontFamily: familySharp, fontPackage: package); ///
Delete Outline icon (sharp)
- static const IconData delete_outline_sharp = IconData(0xe0b8, fontFamily: familySharp, fontPackage: package); + static const IconData delete_outline_sharp = IconData(0xe0bb, fontFamily: familySharp, fontPackage: package); ///
Delete icon (sharp)
- static const IconData delete_sharp = IconData(0xe0b9, fontFamily: familySharp, fontPackage: package); + static const IconData delete_sharp = IconData(0xe0bc, fontFamily: familySharp, fontPackage: package); ///
Desktop icon (sharp)
- static const IconData desktop_sharp = IconData(0xe0ba, fontFamily: familySharp, fontPackage: package); + static const IconData desktop_sharp = IconData(0xe0bd, fontFamily: familySharp, fontPackage: package); ///
Device Settings icon (sharp)
- static const IconData device_settings_sharp = IconData(0xe0bb, fontFamily: familySharp, fontPackage: package); + static const IconData device_settings_sharp = IconData(0xe0be, fontFamily: familySharp, fontPackage: package); ///
Devices Ecosystem icon (sharp)
- static const IconData devices_ecosystem_sharp = IconData(0xe0bc, fontFamily: familySharp, fontPackage: package); + static const IconData devices_ecosystem_sharp = IconData(0xe0bf, fontFamily: familySharp, fontPackage: package); ///
Devices icon (sharp)
- static const IconData devices_sharp = IconData(0xe0bd, fontFamily: familySharp, fontPackage: package); + static const IconData devices_sharp = IconData(0xe0c0, fontFamily: familySharp, fontPackage: package); ///
Dialpad icon (sharp)
- static const IconData dialpad_sharp = IconData(0xe0be, fontFamily: familySharp, fontPackage: package); + static const IconData dialpad_sharp = IconData(0xe0c1, fontFamily: familySharp, fontPackage: package); ///
Dislike icon (sharp)
- static const IconData dislike_sharp = IconData(0xe0bf, fontFamily: familySharp, fontPackage: package); + static const IconData dislike_sharp = IconData(0xe0c2, fontFamily: familySharp, fontPackage: package); ///
Distribute Horizontal icon (sharp)
- static const IconData distribute_horizontal_sharp = IconData(0xe0c0, fontFamily: familySharp, fontPackage: package); + static const IconData distribute_horizontal_sharp = IconData(0xe0c3, fontFamily: familySharp, fontPackage: package); ///
Distribute Vertical icon (sharp)
- static const IconData distribute_vertical_sharp = IconData(0xe0c1, fontFamily: familySharp, fontPackage: package); + static const IconData distribute_vertical_sharp = IconData(0xe0c4, fontFamily: familySharp, fontPackage: package); ///
Doc Attach icon (sharp)
- static const IconData doc_attach_sharp = IconData(0xe0c2, fontFamily: familySharp, fontPackage: package); + static const IconData doc_attach_sharp = IconData(0xe0c5, fontFamily: familySharp, fontPackage: package); ///
Document icon (sharp)
- static const IconData document_sharp = IconData(0xe0c3, fontFamily: familySharp, fontPackage: package); + static const IconData document_sharp = IconData(0xe0c6, fontFamily: familySharp, fontPackage: package); ///
Dollar icon (sharp)
- static const IconData dollar_sharp = IconData(0xe0c4, fontFamily: familySharp, fontPackage: package); + static const IconData dollar_sharp = IconData(0xe0c7, fontFamily: familySharp, fontPackage: package); ///
Download icon (sharp)
- static const IconData download_sharp = IconData(0xe0c5, fontFamily: familySharp, fontPackage: package); + static const IconData download_sharp = IconData(0xe0c8, fontFamily: familySharp, fontPackage: package); ///
Downloading icon (sharp)
- static const IconData downloading_sharp = IconData(0xe0c6, fontFamily: familySharp, fontPackage: package); + static const IconData downloading_sharp = IconData(0xe0c9, fontFamily: familySharp, fontPackage: package); ///
Drop Down Circle icon (sharp)
- static const IconData drop_down_circle_sharp = IconData(0xe0c7, fontFamily: familySharp, fontPackage: package); + static const IconData drop_down_circle_sharp = IconData(0xe0ca, fontFamily: familySharp, fontPackage: package); ///
Eas icon (sharp)
- static const IconData eas_sharp = IconData(0xe0c8, fontFamily: familySharp, fontPackage: package); + static const IconData eas_sharp = IconData(0xe0cb, fontFamily: familySharp, fontPackage: package); ///
Edit Border icon (sharp)
- static const IconData edit_border_sharp = IconData(0xe0c9, fontFamily: familySharp, fontPackage: package); + static const IconData edit_border_sharp = IconData(0xe0cc, fontFamily: familySharp, fontPackage: package); ///
Edit icon (sharp)
- static const IconData edit_sharp = IconData(0xe0ca, fontFamily: familySharp, fontPackage: package); + static const IconData edit_sharp = IconData(0xe0cd, fontFamily: familySharp, fontPackage: package); ///
Email Alt icon (sharp)
- static const IconData email_alt_sharp = IconData(0xe0cb, fontFamily: familySharp, fontPackage: package); + static const IconData email_alt_sharp = IconData(0xe0ce, fontFamily: familySharp, fontPackage: package); ///
Email Outline icon (sharp)
- static const IconData email_outline_sharp = IconData(0xe0cc, fontFamily: familySharp, fontPackage: package); + static const IconData email_outline_sharp = IconData(0xe0cf, fontFamily: familySharp, fontPackage: package); ///
Email Reply All icon (sharp)
- static const IconData email_reply_all_sharp = IconData(0xe0cd, fontFamily: familySharp, fontPackage: package); + static const IconData email_reply_all_sharp = IconData(0xe0d0, fontFamily: familySharp, fontPackage: package); ///
Email icon (sharp)
- static const IconData email_sharp = IconData(0xe0ce, fontFamily: familySharp, fontPackage: package); + static const IconData email_sharp = IconData(0xe0d1, fontFamily: familySharp, fontPackage: package); ///
End Call icon (sharp)
- static const IconData end_call_sharp = IconData(0xe0cf, fontFamily: familySharp, fontPackage: package); + static const IconData end_call_sharp = IconData(0xe0d2, fontFamily: familySharp, fontPackage: package); ///
Enterprise Diagnostics icon (sharp)
- static const IconData enterprise_diagnostics_sharp = IconData(0xe0d0, fontFamily: familySharp, fontPackage: package); + static const IconData enterprise_diagnostics_sharp = IconData(0xe0d3, fontFamily: familySharp, fontPackage: package); ///
Environmental icon (sharp)
- static const IconData environmental_sharp = IconData(0xe0d1, fontFamily: familySharp, fontPackage: package); + static const IconData environmental_sharp = IconData(0xe0d4, fontFamily: familySharp, fontPackage: package); ///
Error Outline icon (sharp)
- static const IconData error_outline_sharp = IconData(0xe0d2, fontFamily: familySharp, fontPackage: package); + static const IconData error_outline_sharp = IconData(0xe0d5, fontFamily: familySharp, fontPackage: package); ///
Error icon (sharp)
- static const IconData error_sharp = IconData(0xe0d3, fontFamily: familySharp, fontPackage: package); + static const IconData error_sharp = IconData(0xe0d6, fontFamily: familySharp, fontPackage: package); ///
Ethernet icon (sharp)
- static const IconData ethernet_sharp = IconData(0xe0d4, fontFamily: familySharp, fontPackage: package); + static const IconData ethernet_sharp = IconData(0xe0d7, fontFamily: familySharp, fontPackage: package); ///
Exit icon (sharp)
- static const IconData exit_sharp = IconData(0xe0d5, fontFamily: familySharp, fontPackage: package); + static const IconData exit_sharp = IconData(0xe0d8, fontFamily: familySharp, fontPackage: package); ///
Expand Less icon (sharp)
- static const IconData expand_less_sharp = IconData(0xe0d6, fontFamily: familySharp, fontPackage: package); + static const IconData expand_less_sharp = IconData(0xe0d9, fontFamily: familySharp, fontPackage: package); ///
Expand More icon (sharp)
- static const IconData expand_more_sharp = IconData(0xe0d7, fontFamily: familySharp, fontPackage: package); + static const IconData expand_more_sharp = IconData(0xe0da, fontFamily: familySharp, fontPackage: package); ///
Eye Dropper icon (sharp)
- static const IconData eye_dropper_sharp = IconData(0xe0d8, fontFamily: familySharp, fontPackage: package); + static const IconData eye_dropper_sharp = IconData(0xe0db, fontFamily: familySharp, fontPackage: package); ///
Eye Preview icon (sharp)
- static const IconData eye_preview_sharp = IconData(0xe0d9, fontFamily: familySharp, fontPackage: package); + static const IconData eye_preview_sharp = IconData(0xe0dc, fontFamily: familySharp, fontPackage: package); ///
Face Id icon (sharp)
- static const IconData face_id_sharp = IconData(0xe0da, fontFamily: familySharp, fontPackage: package); + static const IconData face_id_sharp = IconData(0xe0dd, fontFamily: familySharp, fontPackage: package); ///
Facebook icon (sharp)
- static const IconData facebook_sharp = IconData(0xe0db, fontFamily: familySharp, fontPackage: package); + static const IconData facebook_sharp = IconData(0xe0de, fontFamily: familySharp, fontPackage: package); ///
Factory icon (sharp)
- static const IconData factory_sharp = IconData(0xe0dc, fontFamily: familySharp, fontPackage: package); + static const IconData factory_sharp = IconData(0xe0df, fontFamily: familySharp, fontPackage: package); ///
Fast Forward icon (sharp)
- static const IconData fast_forward_sharp = IconData(0xe0dd, fontFamily: familySharp, fontPackage: package); + static const IconData fast_forward_sharp = IconData(0xe0e0, fontFamily: familySharp, fontPackage: package); ///
Fast Rewind icon (sharp)
- static const IconData fast_rewind_sharp = IconData(0xe0de, fontFamily: familySharp, fontPackage: package); + static const IconData fast_rewind_sharp = IconData(0xe0e1, fontFamily: familySharp, fontPackage: package); ///
File icon (sharp)
- static const IconData file_sharp = IconData(0xe0df, fontFamily: familySharp, fontPackage: package); + static const IconData file_sharp = IconData(0xe0e2, fontFamily: familySharp, fontPackage: package); ///
Filter Alt icon (sharp)
- static const IconData filter_alt_sharp = IconData(0xe0e0, fontFamily: familySharp, fontPackage: package); + static const IconData filter_alt_sharp = IconData(0xe0e3, fontFamily: familySharp, fontPackage: package); ///
Filter icon (sharp)
- static const IconData filter_sharp = IconData(0xe0e1, fontFamily: familySharp, fontPackage: package); + static const IconData filter_sharp = IconData(0xe0e4, fontFamily: familySharp, fontPackage: package); ///
Finished Download icon (sharp)
- static const IconData finished_download_sharp = IconData(0xe0e2, fontFamily: familySharp, fontPackage: package); + static const IconData finished_download_sharp = IconData(0xe0e5, fontFamily: familySharp, fontPackage: package); ///
First Page icon (sharp)
- static const IconData first_page_sharp = IconData(0xe0e3, fontFamily: familySharp, fontPackage: package); + static const IconData first_page_sharp = IconData(0xe0e6, fontFamily: familySharp, fontPackage: package); ///
Flag icon (sharp)
- static const IconData flag_sharp = IconData(0xe0e4, fontFamily: familySharp, fontPackage: package); + static const IconData flag_sharp = IconData(0xe0e7, fontFamily: familySharp, fontPackage: package); ///
Flight Mode icon (sharp)
- static const IconData flight_mode_sharp = IconData(0xe0e5, fontFamily: familySharp, fontPackage: package); + static const IconData flight_mode_sharp = IconData(0xe0e8, fontFamily: familySharp, fontPackage: package); ///
Flight icon (sharp)
- static const IconData flight_sharp = IconData(0xe0e6, fontFamily: familySharp, fontPackage: package); + static const IconData flight_sharp = IconData(0xe0e9, fontFamily: familySharp, fontPackage: package); ///
Flip icon (sharp)
- static const IconData flip_sharp = IconData(0xe0e7, fontFamily: familySharp, fontPackage: package); + static const IconData flip_sharp = IconData(0xe0ea, fontFamily: familySharp, fontPackage: package); ///
Folder File icon (sharp)
- static const IconData folder_file_sharp = IconData(0xe0e8, fontFamily: familySharp, fontPackage: package); + static const IconData folder_file_sharp = IconData(0xe0eb, fontFamily: familySharp, fontPackage: package); ///
Folder Outline icon (sharp)
- static const IconData folder_outline_sharp = IconData(0xe0e9, fontFamily: familySharp, fontPackage: package); + static const IconData folder_outline_sharp = IconData(0xe0ec, fontFamily: familySharp, fontPackage: package); ///
Folder icon (sharp)
- static const IconData folder_sharp = IconData(0xe0ea, fontFamily: familySharp, fontPackage: package); + static const IconData folder_sharp = IconData(0xe0ed, fontFamily: familySharp, fontPackage: package); ///
Font Size Decrease icon (sharp)
- static const IconData font_size_decrease_sharp = IconData(0xe0eb, fontFamily: familySharp, fontPackage: package); + static const IconData font_size_decrease_sharp = IconData(0xe0ee, fontFamily: familySharp, fontPackage: package); ///
Font Size Increase icon (sharp)
- static const IconData font_size_increase_sharp = IconData(0xe0ec, fontFamily: familySharp, fontPackage: package); + static const IconData font_size_increase_sharp = IconData(0xe0ef, fontFamily: familySharp, fontPackage: package); ///
Format Shapes icon (sharp)
- static const IconData format_shapes_sharp = IconData(0xe0ed, fontFamily: familySharp, fontPackage: package); + static const IconData format_shapes_sharp = IconData(0xe0f0, fontFamily: familySharp, fontPackage: package); ///
Forward icon (sharp)
- static const IconData forward_sharp = IconData(0xe0ee, fontFamily: familySharp, fontPackage: package); + static const IconData forward_sharp = IconData(0xe0f1, fontFamily: familySharp, fontPackage: package); ///
Freezer icon (sharp)
- static const IconData freezer_sharp = IconData(0xe0ef, fontFamily: familySharp, fontPackage: package); + static const IconData freezer_sharp = IconData(0xe0f2, fontFamily: familySharp, fontPackage: package); ///
Full Screen Exit icon (sharp)
- static const IconData full_screen_exit_sharp = IconData(0xe0f0, fontFamily: familySharp, fontPackage: package); + static const IconData full_screen_exit_sharp = IconData(0xe0f3, fontFamily: familySharp, fontPackage: package); ///
Full Screen icon (sharp)
- static const IconData full_screen_sharp = IconData(0xe0f1, fontFamily: familySharp, fontPackage: package); + static const IconData full_screen_sharp = IconData(0xe0f4, fontFamily: familySharp, fontPackage: package); ///
Gif icon (sharp)
- static const IconData gif_sharp = IconData(0xe0f2, fontFamily: familySharp, fontPackage: package); + static const IconData gif_sharp = IconData(0xe0f5, fontFamily: familySharp, fontPackage: package); ///
Glossary icon (sharp)
- static const IconData glossary_sharp = IconData(0xe0f3, fontFamily: familySharp, fontPackage: package); + static const IconData glossary_sharp = IconData(0xe0f6, fontFamily: familySharp, fontPackage: package); + + ///
Google Drive icon (sharp)
+ static const IconData google_drive_sharp = IconData(0xe0f7, fontFamily: familySharp, fontPackage: package); ///
Grid Off icon (sharp)
- static const IconData grid_off_sharp = IconData(0xe0f4, fontFamily: familySharp, fontPackage: package); + static const IconData grid_off_sharp = IconData(0xe0f8, fontFamily: familySharp, fontPackage: package); ///
Grid On icon (sharp)
- static const IconData grid_on_sharp = IconData(0xe0f5, fontFamily: familySharp, fontPackage: package); + static const IconData grid_on_sharp = IconData(0xe0f9, fontFamily: familySharp, fontPackage: package); ///
Grid View icon (sharp)
- static const IconData grid_view_sharp = IconData(0xe0f6, fontFamily: familySharp, fontPackage: package); + static const IconData grid_view_sharp = IconData(0xe0fa, fontFamily: familySharp, fontPackage: package); ///
Group icon (sharp)
- static const IconData group_sharp = IconData(0xe0f7, fontFamily: familySharp, fontPackage: package); + static const IconData group_sharp = IconData(0xe0fb, fontFamily: familySharp, fontPackage: package); ///
Groups icon (sharp)
- static const IconData groups_sharp = IconData(0xe0f8, fontFamily: familySharp, fontPackage: package); + static const IconData groups_sharp = IconData(0xe0fc, fontFamily: familySharp, fontPackage: package); ///
Hamburger Menu Navigation Rail icon (sharp)
static const IconData hamburger_menu_navigation_rail_sharp = - IconData(0xe0f9, fontFamily: familySharp, fontPackage: package); + IconData(0xe0fd, fontFamily: familySharp, fontPackage: package); ///
Hamburger Menu icon (sharp)
- static const IconData hamburger_menu_sharp = IconData(0xe0fa, fontFamily: familySharp, fontPackage: package); + static const IconData hamburger_menu_sharp = IconData(0xe0fe, fontFamily: familySharp, fontPackage: package); ///
Hamburger Menu Thick icon (sharp)
- static const IconData hamburger_menu_thick_sharp = IconData(0xe0fb, fontFamily: familySharp, fontPackage: package); + static const IconData hamburger_menu_thick_sharp = IconData(0xe0ff, fontFamily: familySharp, fontPackage: package); ///
Hand icon (sharp)
- static const IconData hand_sharp = IconData(0xe0fc, fontFamily: familySharp, fontPackage: package); + static const IconData hand_sharp = IconData(0xe100, fontFamily: familySharp, fontPackage: package); ///
Happy icon (sharp)
- static const IconData happy_sharp = IconData(0xe0fd, fontFamily: familySharp, fontPackage: package); + static const IconData happy_sharp = IconData(0xe101, fontFamily: familySharp, fontPackage: package); ///
Hdmi icon (sharp)
- static const IconData hdmi_sharp = IconData(0xe0fe, fontFamily: familySharp, fontPackage: package); + static const IconData hdmi_sharp = IconData(0xe102, fontFamily: familySharp, fontPackage: package); ///
Hdr icon (sharp)
- static const IconData hdr_sharp = IconData(0xe0ff, fontFamily: familySharp, fontPackage: package); + static const IconData hdr_sharp = IconData(0xe103, fontFamily: familySharp, fontPackage: package); ///
Headphones icon (sharp)
- static const IconData headphones_sharp = IconData(0xe100, fontFamily: familySharp, fontPackage: package); + static const IconData headphones_sharp = IconData(0xe104, fontFamily: familySharp, fontPackage: package); ///
Headset icon (sharp)
- static const IconData headset_sharp = IconData(0xe101, fontFamily: familySharp, fontPackage: package); + static const IconData headset_sharp = IconData(0xe105, fontFamily: familySharp, fontPackage: package); ///
Help Outline icon (sharp)
- static const IconData help_outline_sharp = IconData(0xe102, fontFamily: familySharp, fontPackage: package); + static const IconData help_outline_sharp = IconData(0xe106, fontFamily: familySharp, fontPackage: package); ///
Help icon (sharp)
- static const IconData help_sharp = IconData(0xe103, fontFamily: familySharp, fontPackage: package); + static const IconData help_sharp = IconData(0xe107, fontFamily: familySharp, fontPackage: package); ///
History icon (sharp)
- static const IconData history_sharp = IconData(0xe104, fontFamily: familySharp, fontPackage: package); + static const IconData history_sharp = IconData(0xe108, fontFamily: familySharp, fontPackage: package); ///
Home icon (sharp)
- static const IconData home_sharp = IconData(0xe105, fontFamily: familySharp, fontPackage: package); + static const IconData home_sharp = IconData(0xe109, fontFamily: familySharp, fontPackage: package); ///
Hourglass icon (sharp)
- static const IconData hourglass_sharp = IconData(0xe106, fontFamily: familySharp, fontPackage: package); + static const IconData hourglass_sharp = IconData(0xe10a, fontFamily: familySharp, fontPackage: package); ///
How Do I icon (sharp)
- static const IconData how_do_i_sharp = IconData(0xe107, fontFamily: familySharp, fontPackage: package); + static const IconData how_do_i_sharp = IconData(0xe10b, fontFamily: familySharp, fontPackage: package); ///
Image Library icon (sharp)
- static const IconData image_library_sharp = IconData(0xe108, fontFamily: familySharp, fontPackage: package); + static const IconData image_library_sharp = IconData(0xe10c, fontFamily: familySharp, fontPackage: package); ///
Image icon (sharp)
- static const IconData image_sharp = IconData(0xe109, fontFamily: familySharp, fontPackage: package); + static const IconData image_sharp = IconData(0xe10d, fontFamily: familySharp, fontPackage: package); ///
Important Notification icon (sharp)
- static const IconData important_notification_sharp = IconData(0xe10a, fontFamily: familySharp, fontPackage: package); + static const IconData important_notification_sharp = IconData(0xe10e, fontFamily: familySharp, fontPackage: package); ///
Inbox icon (sharp)
- static const IconData inbox_sharp = IconData(0xe10b, fontFamily: familySharp, fontPackage: package); + static const IconData inbox_sharp = IconData(0xe10f, fontFamily: familySharp, fontPackage: package); ///
Indent Decrease icon (sharp)
- static const IconData indent_decrease_sharp = IconData(0xe10c, fontFamily: familySharp, fontPackage: package); + static const IconData indent_decrease_sharp = IconData(0xe110, fontFamily: familySharp, fontPackage: package); ///
Indent Increase icon (sharp)
- static const IconData indent_increase_sharp = IconData(0xe10d, fontFamily: familySharp, fontPackage: package); + static const IconData indent_increase_sharp = IconData(0xe111, fontFamily: familySharp, fontPackage: package); ///
Indeterminate Check Box icon (sharp)
- static const IconData indeterminate_check_box_sharp = IconData(0xe10e, fontFamily: familySharp, fontPackage: package); + static const IconData indeterminate_check_box_sharp = IconData(0xe112, fontFamily: familySharp, fontPackage: package); ///
Info icon (sharp)
- static const IconData info_sharp = IconData(0xe10f, fontFamily: familySharp, fontPackage: package); + static const IconData info_sharp = IconData(0xe113, fontFamily: familySharp, fontPackage: package); ///
Instagram icon (sharp)
- static const IconData instagram_sharp = IconData(0xe110, fontFamily: familySharp, fontPackage: package); + static const IconData instagram_sharp = IconData(0xe114, fontFamily: familySharp, fontPackage: package); ///
Ios Share icon (sharp)
- static const IconData ios_share_sharp = IconData(0xe111, fontFamily: familySharp, fontPackage: package); + static const IconData ios_share_sharp = IconData(0xe115, fontFamily: familySharp, fontPackage: package); ///
Iso icon (sharp)
- static const IconData iso_sharp = IconData(0xe112, fontFamily: familySharp, fontPackage: package); + static const IconData iso_sharp = IconData(0xe116, fontFamily: familySharp, fontPackage: package); ///
Issue Audit icon (sharp)
- static const IconData issue_audit_sharp = IconData(0xe113, fontFamily: familySharp, fontPackage: package); + static const IconData issue_audit_sharp = IconData(0xe117, fontFamily: familySharp, fontPackage: package); ///
Italic icon (sharp)
- static const IconData italic_sharp = IconData(0xe114, fontFamily: familySharp, fontPackage: package); + static const IconData italic_sharp = IconData(0xe118, fontFamily: familySharp, fontPackage: package); ///
Jpg Attach icon (sharp)
- static const IconData jpg_attach_sharp = IconData(0xe115, fontFamily: familySharp, fontPackage: package); + static const IconData jpg_attach_sharp = IconData(0xe119, fontFamily: familySharp, fontPackage: package); ///
Justify icon (sharp)
- static const IconData justify_sharp = IconData(0xe116, fontFamily: familySharp, fontPackage: package); + static const IconData justify_sharp = IconData(0xe11a, fontFamily: familySharp, fontPackage: package); ///
Keyboard icon (sharp)
- static const IconData keyboard_sharp = IconData(0xe117, fontFamily: familySharp, fontPackage: package); + static const IconData keyboard_sharp = IconData(0xe11b, fontFamily: familySharp, fontPackage: package); ///
Label icon (sharp)
- static const IconData label_sharp = IconData(0xe118, fontFamily: familySharp, fontPackage: package); + static const IconData label_sharp = IconData(0xe11c, fontFamily: familySharp, fontPackage: package); ///
Laptop icon (sharp)
- static const IconData laptop_sharp = IconData(0xe119, fontFamily: familySharp, fontPackage: package); + static const IconData laptop_sharp = IconData(0xe11d, fontFamily: familySharp, fontPackage: package); ///
Last Page icon (sharp)
- static const IconData last_page_sharp = IconData(0xe11a, fontFamily: familySharp, fontPackage: package); + static const IconData last_page_sharp = IconData(0xe11e, fontFamily: familySharp, fontPackage: package); ///
Layers icon (sharp)
- static const IconData layers_sharp = IconData(0xe11b, fontFamily: familySharp, fontPackage: package); + static const IconData layers_sharp = IconData(0xe11f, fontFamily: familySharp, fontPackage: package); ///
Light Mode icon (sharp)
- static const IconData light_mode_sharp = IconData(0xe11c, fontFamily: familySharp, fontPackage: package); + static const IconData light_mode_sharp = IconData(0xe120, fontFamily: familySharp, fontPackage: package); ///
Light Rail Train icon (sharp)
- static const IconData light_rail_train_sharp = IconData(0xe11d, fontFamily: familySharp, fontPackage: package); + static const IconData light_rail_train_sharp = IconData(0xe121, fontFamily: familySharp, fontPackage: package); ///
Lightbulb icon (sharp)
- static const IconData lightbulb_sharp = IconData(0xe11e, fontFamily: familySharp, fontPackage: package); + static const IconData lightbulb_sharp = IconData(0xe122, fontFamily: familySharp, fontPackage: package); ///
Like icon (sharp)
- static const IconData like_sharp = IconData(0xe11f, fontFamily: familySharp, fontPackage: package); + static const IconData like_sharp = IconData(0xe123, fontFamily: familySharp, fontPackage: package); ///
Line Spacing icon (sharp)
- static const IconData line_spacing_sharp = IconData(0xe120, fontFamily: familySharp, fontPackage: package); + static const IconData line_spacing_sharp = IconData(0xe124, fontFamily: familySharp, fontPackage: package); ///
Link Add icon (sharp)
- static const IconData link_add_sharp = IconData(0xe121, fontFamily: familySharp, fontPackage: package); + static const IconData link_add_sharp = IconData(0xe125, fontFamily: familySharp, fontPackage: package); ///
Link icon (sharp)
- static const IconData link_sharp = IconData(0xe122, fontFamily: familySharp, fontPackage: package); + static const IconData link_sharp = IconData(0xe126, fontFamily: familySharp, fontPackage: package); ///
Linkedin icon (sharp)
- static const IconData linkedin_sharp = IconData(0xe123, fontFamily: familySharp, fontPackage: package); + static const IconData linkedin_sharp = IconData(0xe127, fontFamily: familySharp, fontPackage: package); ///
List Alt icon (sharp)
- static const IconData list_alt_sharp = IconData(0xe124, fontFamily: familySharp, fontPackage: package); + static const IconData list_alt_sharp = IconData(0xe128, fontFamily: familySharp, fontPackage: package); ///
List Bullet Contained icon (sharp)
- static const IconData list_bullet_contained_sharp = IconData(0xe125, fontFamily: familySharp, fontPackage: package); + static const IconData list_bullet_contained_sharp = IconData(0xe129, fontFamily: familySharp, fontPackage: package); ///
List Feedback icon (sharp)
- static const IconData list_feedback_sharp = IconData(0xe126, fontFamily: familySharp, fontPackage: package); + static const IconData list_feedback_sharp = IconData(0xe12a, fontFamily: familySharp, fontPackage: package); ///
List Form icon (sharp)
- static const IconData list_form_sharp = IconData(0xe127, fontFamily: familySharp, fontPackage: package); + static const IconData list_form_sharp = IconData(0xe12b, fontFamily: familySharp, fontPackage: package); ///
List icon (sharp)
- static const IconData list_sharp = IconData(0xe128, fontFamily: familySharp, fontPackage: package); + static const IconData list_sharp = IconData(0xe12c, fontFamily: familySharp, fontPackage: package); ///
Local Shipping icon (sharp)
- static const IconData local_shipping_sharp = IconData(0xe129, fontFamily: familySharp, fontPackage: package); + static const IconData local_shipping_sharp = IconData(0xe12d, fontFamily: familySharp, fontPackage: package); ///
Location Off icon (sharp)
- static const IconData location_off_sharp = IconData(0xe12a, fontFamily: familySharp, fontPackage: package); + static const IconData location_off_sharp = IconData(0xe12e, fontFamily: familySharp, fontPackage: package); ///
Location Point icon (sharp)
- static const IconData location_point_sharp = IconData(0xe12b, fontFamily: familySharp, fontPackage: package); + static const IconData location_point_sharp = IconData(0xe12f, fontFamily: familySharp, fontPackage: package); ///
Location icon (sharp)
- static const IconData location_sharp = IconData(0xe12c, fontFamily: familySharp, fontPackage: package); + static const IconData location_sharp = IconData(0xe130, fontFamily: familySharp, fontPackage: package); ///
Lock Alt icon (sharp)
- static const IconData lock_alt_sharp = IconData(0xe12d, fontFamily: familySharp, fontPackage: package); + static const IconData lock_alt_sharp = IconData(0xe131, fontFamily: familySharp, fontPackage: package); ///
Lock icon (sharp)
- static const IconData lock_sharp = IconData(0xe12e, fontFamily: familySharp, fontPackage: package); + static const IconData lock_sharp = IconData(0xe132, fontFamily: familySharp, fontPackage: package); ///
Lock Undo icon (sharp)
- static const IconData lock_undo_sharp = IconData(0xe12f, fontFamily: familySharp, fontPackage: package); + static const IconData lock_undo_sharp = IconData(0xe133, fontFamily: familySharp, fontPackage: package); ///
Log In icon (sharp)
- static const IconData log_in_sharp = IconData(0xe130, fontFamily: familySharp, fontPackage: package); + static const IconData log_in_sharp = IconData(0xe134, fontFamily: familySharp, fontPackage: package); ///
Log Out icon (sharp)
- static const IconData log_out_sharp = IconData(0xe131, fontFamily: familySharp, fontPackage: package); + static const IconData log_out_sharp = IconData(0xe135, fontFamily: familySharp, fontPackage: package); ///
Love Outline icon (sharp)
- static const IconData love_outline_sharp = IconData(0xe132, fontFamily: familySharp, fontPackage: package); + static const IconData love_outline_sharp = IconData(0xe136, fontFamily: familySharp, fontPackage: package); ///
Love icon (sharp)
- static const IconData love_sharp = IconData(0xe133, fontFamily: familySharp, fontPackage: package); + static const IconData love_sharp = IconData(0xe137, fontFamily: familySharp, fontPackage: package); ///
Maintenance icon (sharp)
- static const IconData maintenance_sharp = IconData(0xe134, fontFamily: familySharp, fontPackage: package); + static const IconData maintenance_sharp = IconData(0xe138, fontFamily: familySharp, fontPackage: package); ///
Map icon (sharp)
- static const IconData map_sharp = IconData(0xe135, fontFamily: familySharp, fontPackage: package); + static const IconData map_sharp = IconData(0xe139, fontFamily: familySharp, fontPackage: package); ///
Meal icon (sharp)
- static const IconData meal_sharp = IconData(0xe136, fontFamily: familySharp, fontPackage: package); + static const IconData meal_sharp = IconData(0xe13a, fontFamily: familySharp, fontPackage: package); ///
Medium icon (sharp)
- static const IconData medium_sharp = IconData(0xe137, fontFamily: familySharp, fontPackage: package); + static const IconData medium_sharp = IconData(0xe13b, fontFamily: familySharp, fontPackage: package); ///
Memory icon (sharp)
- static const IconData memory_sharp = IconData(0xe138, fontFamily: familySharp, fontPackage: package); + static const IconData memory_sharp = IconData(0xe13c, fontFamily: familySharp, fontPackage: package); ///
Message icon (sharp)
- static const IconData message_sharp = IconData(0xe139, fontFamily: familySharp, fontPackage: package); + static const IconData message_sharp = IconData(0xe13d, fontFamily: familySharp, fontPackage: package); ///
Microphone Off icon (sharp)
- static const IconData microphone_off_sharp = IconData(0xe13a, fontFamily: familySharp, fontPackage: package); + static const IconData microphone_off_sharp = IconData(0xe13e, fontFamily: familySharp, fontPackage: package); ///
Microphone Outline icon (sharp)
- static const IconData microphone_outline_sharp = IconData(0xe13b, fontFamily: familySharp, fontPackage: package); + static const IconData microphone_outline_sharp = IconData(0xe13f, fontFamily: familySharp, fontPackage: package); ///
Microphone icon (sharp)
- static const IconData microphone_sharp = IconData(0xe13c, fontFamily: familySharp, fontPackage: package); + static const IconData microphone_sharp = IconData(0xe140, fontFamily: familySharp, fontPackage: package); ///
Mobile Friendly icon (sharp)
- static const IconData mobile_friendly_sharp = IconData(0xe13d, fontFamily: familySharp, fontPackage: package); + static const IconData mobile_friendly_sharp = IconData(0xe141, fontFamily: familySharp, fontPackage: package); ///
Money Euro icon (sharp)
- static const IconData money_euro_sharp = IconData(0xe13e, fontFamily: familySharp, fontPackage: package); + static const IconData money_euro_sharp = IconData(0xe142, fontFamily: familySharp, fontPackage: package); ///
Money Pound icon (sharp)
- static const IconData money_pound_sharp = IconData(0xe13f, fontFamily: familySharp, fontPackage: package); + static const IconData money_pound_sharp = IconData(0xe143, fontFamily: familySharp, fontPackage: package); ///
Money Usd icon (sharp)
- static const IconData money_usd_sharp = IconData(0xe140, fontFamily: familySharp, fontPackage: package); + static const IconData money_usd_sharp = IconData(0xe144, fontFamily: familySharp, fontPackage: package); ///
Monitor icon (sharp)
- static const IconData monitor_sharp = IconData(0xe141, fontFamily: familySharp, fontPackage: package); + static const IconData monitor_sharp = IconData(0xe145, fontFamily: familySharp, fontPackage: package); ///
More Horizontal icon (sharp)
- static const IconData more_horizontal_sharp = IconData(0xe142, fontFamily: familySharp, fontPackage: package); + static const IconData more_horizontal_sharp = IconData(0xe146, fontFamily: familySharp, fontPackage: package); ///
More Vertical icon (sharp)
- static const IconData more_vertical_sharp = IconData(0xe143, fontFamily: familySharp, fontPackage: package); + static const IconData more_vertical_sharp = IconData(0xe147, fontFamily: familySharp, fontPackage: package); ///
My Location icon (sharp)
- static const IconData my_location_sharp = IconData(0xe144, fontFamily: familySharp, fontPackage: package); + static const IconData my_location_sharp = IconData(0xe148, fontFamily: familySharp, fontPackage: package); ///
Navigate icon (sharp)
- static const IconData navigate_sharp = IconData(0xe145, fontFamily: familySharp, fontPackage: package); + static const IconData navigate_sharp = IconData(0xe149, fontFamily: familySharp, fontPackage: package); ///
Navigation icon (sharp)
- static const IconData navigation_sharp = IconData(0xe146, fontFamily: familySharp, fontPackage: package); + static const IconData navigation_sharp = IconData(0xe14a, fontFamily: familySharp, fontPackage: package); ///
Near Me icon (sharp)
- static const IconData near_me_sharp = IconData(0xe147, fontFamily: familySharp, fontPackage: package); + static const IconData near_me_sharp = IconData(0xe14b, fontFamily: familySharp, fontPackage: package); ///
Network Signal icon (sharp)
- static const IconData network_signal_sharp = IconData(0xe148, fontFamily: familySharp, fontPackage: package); + static const IconData network_signal_sharp = IconData(0xe14c, fontFamily: familySharp, fontPackage: package); ///
New Chat icon (sharp)
- static const IconData new_chat_sharp = IconData(0xe149, fontFamily: familySharp, fontPackage: package); + static const IconData new_chat_sharp = IconData(0xe14d, fontFamily: familySharp, fontPackage: package); ///
Nfc icon (sharp)
- static const IconData nfc_sharp = IconData(0xe14a, fontFamily: familySharp, fontPackage: package); + static const IconData nfc_sharp = IconData(0xe14e, fontFamily: familySharp, fontPackage: package); ///
Night icon (sharp)
- static const IconData night_sharp = IconData(0xe14b, fontFamily: familySharp, fontPackage: package); + static const IconData night_sharp = IconData(0xe14f, fontFamily: familySharp, fontPackage: package); ///
No Color icon (sharp)
- static const IconData no_color_sharp = IconData(0xe14c, fontFamily: familySharp, fontPackage: package); + static const IconData no_color_sharp = IconData(0xe150, fontFamily: familySharp, fontPackage: package); ///
Note icon (sharp)
- static const IconData note_sharp = IconData(0xe14d, fontFamily: familySharp, fontPackage: package); + static const IconData note_sharp = IconData(0xe151, fontFamily: familySharp, fontPackage: package); ///
Notifications Off icon (sharp)
- static const IconData notifications_off_sharp = IconData(0xe14e, fontFamily: familySharp, fontPackage: package); + static const IconData notifications_off_sharp = IconData(0xe152, fontFamily: familySharp, fontPackage: package); ///
Numbered List icon (sharp)
- static const IconData numbered_list_sharp = IconData(0xe14f, fontFamily: familySharp, fontPackage: package); + static const IconData numbered_list_sharp = IconData(0xe153, fontFamily: familySharp, fontPackage: package); ///
Open In Full icon (sharp)
- static const IconData open_in_full_sharp = IconData(0xe150, fontFamily: familySharp, fontPackage: package); + static const IconData open_in_full_sharp = IconData(0xe154, fontFamily: familySharp, fontPackage: package); ///
Open In New Window icon (sharp)
- static const IconData open_in_new_window_sharp = IconData(0xe151, fontFamily: familySharp, fontPackage: package); + static const IconData open_in_new_window_sharp = IconData(0xe155, fontFamily: familySharp, fontPackage: package); ///
Open New Off icon (sharp)
- static const IconData open_new_off_sharp = IconData(0xe152, fontFamily: familySharp, fontPackage: package); + static const IconData open_new_off_sharp = IconData(0xe156, fontFamily: familySharp, fontPackage: package); ///
Page Height icon (sharp)
- static const IconData page_height_sharp = IconData(0xe153, fontFamily: familySharp, fontPackage: package); + static const IconData page_height_sharp = IconData(0xe157, fontFamily: familySharp, fontPackage: package); ///
Page Rotate icon (sharp)
- static const IconData page_rotate_sharp = IconData(0xe154, fontFamily: familySharp, fontPackage: package); + static const IconData page_rotate_sharp = IconData(0xe158, fontFamily: familySharp, fontPackage: package); ///
Page Width icon (sharp)
- static const IconData page_width_sharp = IconData(0xe155, fontFamily: familySharp, fontPackage: package); + static const IconData page_width_sharp = IconData(0xe159, fontFamily: familySharp, fontPackage: package); ///
Palette icon (sharp)
- static const IconData palette_sharp = IconData(0xe156, fontFamily: familySharp, fontPackage: package); + static const IconData palette_sharp = IconData(0xe15a, fontFamily: familySharp, fontPackage: package); ///
Partner icon (sharp)
- static const IconData partner_sharp = IconData(0xe157, fontFamily: familySharp, fontPackage: package); + static const IconData partner_sharp = IconData(0xe15b, fontFamily: familySharp, fontPackage: package); ///
Pause Circle icon (sharp)
- static const IconData pause_circle_sharp = IconData(0xe158, fontFamily: familySharp, fontPackage: package); + static const IconData pause_circle_sharp = IconData(0xe15c, fontFamily: familySharp, fontPackage: package); ///
Pause icon (sharp)
- static const IconData pause_sharp = IconData(0xe159, fontFamily: familySharp, fontPackage: package); + static const IconData pause_sharp = IconData(0xe15d, fontFamily: familySharp, fontPackage: package); ///
Pdf Attach icon (sharp)
- static const IconData pdf_attach_sharp = IconData(0xe15a, fontFamily: familySharp, fontPackage: package); + static const IconData pdf_attach_sharp = IconData(0xe15e, fontFamily: familySharp, fontPackage: package); ///
Pending icon (sharp)
- static const IconData pending_sharp = IconData(0xe15b, fontFamily: familySharp, fontPackage: package); + static const IconData pending_sharp = IconData(0xe15f, fontFamily: familySharp, fontPackage: package); ///
Person Admin icon (sharp)
- static const IconData person_admin_sharp = IconData(0xe15c, fontFamily: familySharp, fontPackage: package); + static const IconData person_admin_sharp = IconData(0xe160, fontFamily: familySharp, fontPackage: package); ///
Person Assign icon (sharp)
- static const IconData person_assign_sharp = IconData(0xe15d, fontFamily: familySharp, fontPackage: package); + static const IconData person_assign_sharp = IconData(0xe161, fontFamily: familySharp, fontPackage: package); ///
Person Clock icon (sharp)
- static const IconData person_clock_sharp = IconData(0xe15e, fontFamily: familySharp, fontPackage: package); + static const IconData person_clock_sharp = IconData(0xe162, fontFamily: familySharp, fontPackage: package); ///
Person Info icon (sharp)
- static const IconData person_info_sharp = IconData(0xe15f, fontFamily: familySharp, fontPackage: package); + static const IconData person_info_sharp = IconData(0xe163, fontFamily: familySharp, fontPackage: package); ///
Person Manager icon (sharp)
- static const IconData person_manager_sharp = IconData(0xe160, fontFamily: familySharp, fontPackage: package); + static const IconData person_manager_sharp = IconData(0xe164, fontFamily: familySharp, fontPackage: package); ///
Person Move icon (sharp)
- static const IconData person_move_sharp = IconData(0xe161, fontFamily: familySharp, fontPackage: package); + static const IconData person_move_sharp = IconData(0xe165, fontFamily: familySharp, fontPackage: package); ///
Person Outline icon (sharp)
- static const IconData person_outline_sharp = IconData(0xe162, fontFamily: familySharp, fontPackage: package); + static const IconData person_outline_sharp = IconData(0xe166, fontFamily: familySharp, fontPackage: package); ///
Person Search icon (sharp)
- static const IconData person_search_sharp = IconData(0xe163, fontFamily: familySharp, fontPackage: package); + static const IconData person_search_sharp = IconData(0xe167, fontFamily: familySharp, fontPackage: package); ///
Person icon (sharp)
- static const IconData person_sharp = IconData(0xe164, fontFamily: familySharp, fontPackage: package); + static const IconData person_sharp = IconData(0xe168, fontFamily: familySharp, fontPackage: package); ///
Person Swap icon (sharp)
- static const IconData person_swap_sharp = IconData(0xe165, fontFamily: familySharp, fontPackage: package); + static const IconData person_swap_sharp = IconData(0xe169, fontFamily: familySharp, fontPackage: package); ///
Person Walk icon (sharp)
- static const IconData person_walk_sharp = IconData(0xe166, fontFamily: familySharp, fontPackage: package); + static const IconData person_walk_sharp = IconData(0xe16a, fontFamily: familySharp, fontPackage: package); ///
Phone Android icon (sharp)
- static const IconData phone_android_sharp = IconData(0xe167, fontFamily: familySharp, fontPackage: package); + static const IconData phone_android_sharp = IconData(0xe16b, fontFamily: familySharp, fontPackage: package); ///
Phone Bluetooth Speaker icon (sharp)
- static const IconData phone_bluetooth_speaker_sharp = IconData(0xe168, fontFamily: familySharp, fontPackage: package); + static const IconData phone_bluetooth_speaker_sharp = IconData(0xe16c, fontFamily: familySharp, fontPackage: package); ///
Phone In Talk icon (sharp)
- static const IconData phone_in_talk_sharp = IconData(0xe169, fontFamily: familySharp, fontPackage: package); + static const IconData phone_in_talk_sharp = IconData(0xe16d, fontFamily: familySharp, fontPackage: package); ///
Phone Iphone icon (sharp)
- static const IconData phone_iphone_sharp = IconData(0xe16a, fontFamily: familySharp, fontPackage: package); + static const IconData phone_iphone_sharp = IconData(0xe16e, fontFamily: familySharp, fontPackage: package); ///
Phone icon (sharp)
- static const IconData phone_sharp = IconData(0xe16b, fontFamily: familySharp, fontPackage: package); + static const IconData phone_sharp = IconData(0xe16f, fontFamily: familySharp, fontPackage: package); ///
Phonelink icon (sharp)
- static const IconData phonelink_sharp = IconData(0xe16c, fontFamily: familySharp, fontPackage: package); + static const IconData phonelink_sharp = IconData(0xe170, fontFamily: familySharp, fontPackage: package); ///
Phrase icon (sharp)
- static const IconData phrase_sharp = IconData(0xe16d, fontFamily: familySharp, fontPackage: package); + static const IconData phrase_sharp = IconData(0xe171, fontFamily: familySharp, fontPackage: package); ///
Pin icon (sharp)
- static const IconData pin_sharp = IconData(0xe16e, fontFamily: familySharp, fontPackage: package); + static const IconData pin_sharp = IconData(0xe172, fontFamily: familySharp, fontPackage: package); ///
Place icon (sharp)
- static const IconData place_sharp = IconData(0xe16f, fontFamily: familySharp, fontPackage: package); + static const IconData place_sharp = IconData(0xe173, fontFamily: familySharp, fontPackage: package); ///
Planogram icon (sharp)
- static const IconData planogram_sharp = IconData(0xe170, fontFamily: familySharp, fontPackage: package); + static const IconData planogram_sharp = IconData(0xe174, fontFamily: familySharp, fontPackage: package); ///
Play Circle icon (sharp)
- static const IconData play_circle_sharp = IconData(0xe171, fontFamily: familySharp, fontPackage: package); + static const IconData play_circle_sharp = IconData(0xe175, fontFamily: familySharp, fontPackage: package); ///
Play Outline icon (sharp)
- static const IconData play_outline_sharp = IconData(0xe172, fontFamily: familySharp, fontPackage: package); + static const IconData play_outline_sharp = IconData(0xe176, fontFamily: familySharp, fontPackage: package); ///
Play icon (sharp)
- static const IconData play_sharp = IconData(0xe173, fontFamily: familySharp, fontPackage: package); + static const IconData play_sharp = IconData(0xe177, fontFamily: familySharp, fontPackage: package); ///
Png Attach icon (sharp)
- static const IconData png_attach_sharp = IconData(0xe174, fontFamily: familySharp, fontPackage: package); + static const IconData png_attach_sharp = IconData(0xe178, fontFamily: familySharp, fontPackage: package); ///
Point Gift icon (sharp)
- static const IconData point_gift_sharp = IconData(0xe175, fontFamily: familySharp, fontPackage: package); + static const IconData point_gift_sharp = IconData(0xe179, fontFamily: familySharp, fontPackage: package); ///
Point Heart icon (sharp)
- static const IconData point_heart_sharp = IconData(0xe176, fontFamily: familySharp, fontPackage: package); + static const IconData point_heart_sharp = IconData(0xe17a, fontFamily: familySharp, fontPackage: package); ///
Point Money icon (sharp)
- static const IconData point_money_sharp = IconData(0xe177, fontFamily: familySharp, fontPackage: package); + static const IconData point_money_sharp = IconData(0xe17b, fontFamily: familySharp, fontPackage: package); ///
Point Star icon (sharp)
- static const IconData point_star_sharp = IconData(0xe178, fontFamily: familySharp, fontPackage: package); + static const IconData point_star_sharp = IconData(0xe17c, fontFamily: familySharp, fontPackage: package); ///
Point Token icon (sharp)
- static const IconData point_token_sharp = IconData(0xe179, fontFamily: familySharp, fontPackage: package); + static const IconData point_token_sharp = IconData(0xe17d, fontFamily: familySharp, fontPackage: package); ///
Portrait icon (sharp)
- static const IconData portrait_sharp = IconData(0xe17a, fontFamily: familySharp, fontPackage: package); + static const IconData portrait_sharp = IconData(0xe17e, fontFamily: familySharp, fontPackage: package); ///
Ppt Attach icon (sharp)
- static const IconData ppt_attach_sharp = IconData(0xe17b, fontFamily: familySharp, fontPackage: package); + static const IconData ppt_attach_sharp = IconData(0xe17f, fontFamily: familySharp, fontPackage: package); ///
Price icon (sharp)
- static const IconData price_sharp = IconData(0xe17c, fontFamily: familySharp, fontPackage: package); + static const IconData price_sharp = IconData(0xe180, fontFamily: familySharp, fontPackage: package); ///
Printer icon (sharp)
- static const IconData printer_sharp = IconData(0xe17d, fontFamily: familySharp, fontPackage: package); + static const IconData printer_sharp = IconData(0xe181, fontFamily: familySharp, fontPackage: package); ///
Priority icon (sharp)
- static const IconData priority_sharp = IconData(0xe17e, fontFamily: familySharp, fontPackage: package); + static const IconData priority_sharp = IconData(0xe182, fontFamily: familySharp, fontPackage: package); ///
Pro icon (sharp)
- static const IconData pro_sharp = IconData(0xe17f, fontFamily: familySharp, fontPackage: package); + static const IconData pro_sharp = IconData(0xe183, fontFamily: familySharp, fontPackage: package); ///
Productivity Apps icon (sharp)
- static const IconData productivity_apps_sharp = IconData(0xe180, fontFamily: familySharp, fontPackage: package); + static const IconData productivity_apps_sharp = IconData(0xe184, fontFamily: familySharp, fontPackage: package); ///
Ptt icon (sharp)
- static const IconData ptt_sharp = IconData(0xe181, fontFamily: familySharp, fontPackage: package); + static const IconData ptt_sharp = IconData(0xe185, fontFamily: familySharp, fontPackage: package); ///
Publish icon (sharp)
- static const IconData publish_sharp = IconData(0xe182, fontFamily: familySharp, fontPackage: package); + static const IconData publish_sharp = IconData(0xe186, fontFamily: familySharp, fontPackage: package); + + ///
Push Pin Off icon (sharp)
+ static const IconData push_pin_off_sharp = IconData(0xe187, fontFamily: familySharp, fontPackage: package); ///
Push Pin icon (sharp)
- static const IconData push_pin_sharp = IconData(0xe183, fontFamily: familySharp, fontPackage: package); + static const IconData push_pin_sharp = IconData(0xe188, fontFamily: familySharp, fontPackage: package); ///
Qr Code icon (sharp)
- static const IconData qr_code_sharp = IconData(0xe184, fontFamily: familySharp, fontPackage: package); + static const IconData qr_code_sharp = IconData(0xe189, fontFamily: familySharp, fontPackage: package); ///
Queue icon (sharp)
- static const IconData queue_sharp = IconData(0xe185, fontFamily: familySharp, fontPackage: package); + static const IconData queue_sharp = IconData(0xe18a, fontFamily: familySharp, fontPackage: package); ///
Radio Button Checked icon (sharp)
- static const IconData radio_button_checked_sharp = IconData(0xe186, fontFamily: familySharp, fontPackage: package); + static const IconData radio_button_checked_sharp = IconData(0xe18b, fontFamily: familySharp, fontPackage: package); ///
Radio Button Unchecked icon (sharp)
- static const IconData radio_button_unchecked_sharp = IconData(0xe187, fontFamily: familySharp, fontPackage: package); + static const IconData radio_button_unchecked_sharp = IconData(0xe18c, fontFamily: familySharp, fontPackage: package); ///
React Add icon (sharp)
- static const IconData react_add_sharp = IconData(0xe188, fontFamily: familySharp, fontPackage: package); + static const IconData react_add_sharp = IconData(0xe18d, fontFamily: familySharp, fontPackage: package); ///
React Thumbsup icon (sharp)
- static const IconData react_thumbsup_sharp = IconData(0xe189, fontFamily: familySharp, fontPackage: package); + static const IconData react_thumbsup_sharp = IconData(0xe18e, fontFamily: familySharp, fontPackage: package); ///
Recall icon (sharp)
- static const IconData recall_sharp = IconData(0xe18a, fontFamily: familySharp, fontPackage: package); + static const IconData recall_sharp = IconData(0xe18f, fontFamily: familySharp, fontPackage: package); ///
Receipt icon (sharp)
- static const IconData receipt_sharp = IconData(0xe18b, fontFamily: familySharp, fontPackage: package); + static const IconData receipt_sharp = IconData(0xe190, fontFamily: familySharp, fontPackage: package); ///
Recording icon (sharp)
- static const IconData recording_sharp = IconData(0xe18c, fontFamily: familySharp, fontPackage: package); + static const IconData recording_sharp = IconData(0xe191, fontFamily: familySharp, fontPackage: package); ///
Redo icon (sharp)
- static const IconData redo_sharp = IconData(0xe18d, fontFamily: familySharp, fontPackage: package); + static const IconData redo_sharp = IconData(0xe192, fontFamily: familySharp, fontPackage: package); ///
Refresh icon (sharp)
- static const IconData refresh_sharp = IconData(0xe18e, fontFamily: familySharp, fontPackage: package); + static const IconData refresh_sharp = IconData(0xe193, fontFamily: familySharp, fontPackage: package); ///
Remove Box icon (sharp)
- static const IconData remove_box_sharp = IconData(0xe18f, fontFamily: familySharp, fontPackage: package); + static const IconData remove_box_sharp = IconData(0xe194, fontFamily: familySharp, fontPackage: package); ///
Remove Circle Outline icon (sharp)
- static const IconData remove_circle_outline_sharp = IconData(0xe190, fontFamily: familySharp, fontPackage: package); + static const IconData remove_circle_outline_sharp = IconData(0xe195, fontFamily: familySharp, fontPackage: package); ///
Remove Circle icon (sharp)
- static const IconData remove_circle_sharp = IconData(0xe191, fontFamily: familySharp, fontPackage: package); + static const IconData remove_circle_sharp = IconData(0xe196, fontFamily: familySharp, fontPackage: package); ///
Remove Group icon (sharp)
- static const IconData remove_group_sharp = IconData(0xe192, fontFamily: familySharp, fontPackage: package); + static const IconData remove_group_sharp = IconData(0xe197, fontFamily: familySharp, fontPackage: package); ///
Remove Person icon (sharp)
- static const IconData remove_person_sharp = IconData(0xe193, fontFamily: familySharp, fontPackage: package); + static const IconData remove_person_sharp = IconData(0xe198, fontFamily: familySharp, fontPackage: package); ///
Remove icon (sharp)
- static const IconData remove_sharp = IconData(0xe194, fontFamily: familySharp, fontPackage: package); + static const IconData remove_sharp = IconData(0xe199, fontFamily: familySharp, fontPackage: package); ///
Renew icon (sharp)
- static const IconData renew_sharp = IconData(0xe195, fontFamily: familySharp, fontPackage: package); + static const IconData renew_sharp = IconData(0xe19a, fontFamily: familySharp, fontPackage: package); ///
Reorder icon (sharp)
- static const IconData reorder_sharp = IconData(0xe196, fontFamily: familySharp, fontPackage: package); + static const IconData reorder_sharp = IconData(0xe19b, fontFamily: familySharp, fontPackage: package); ///
Repeat icon (sharp)
- static const IconData repeat_sharp = IconData(0xe197, fontFamily: familySharp, fontPackage: package); + static const IconData repeat_sharp = IconData(0xe19c, fontFamily: familySharp, fontPackage: package); ///
Replay icon (sharp)
- static const IconData replay_sharp = IconData(0xe198, fontFamily: familySharp, fontPackage: package); + static const IconData replay_sharp = IconData(0xe19d, fontFamily: familySharp, fontPackage: package); ///
Reply icon (sharp)
- static const IconData reply_sharp = IconData(0xe199, fontFamily: familySharp, fontPackage: package); + static const IconData reply_sharp = IconData(0xe19e, fontFamily: familySharp, fontPackage: package); ///
Report icon (sharp)
- static const IconData report_sharp = IconData(0xe19a, fontFamily: familySharp, fontPackage: package); + static const IconData report_sharp = IconData(0xe19f, fontFamily: familySharp, fontPackage: package); ///
Restart Alt icon (sharp)
- static const IconData restart_alt_sharp = IconData(0xe19b, fontFamily: familySharp, fontPackage: package); + static const IconData restart_alt_sharp = IconData(0xe1a0, fontFamily: familySharp, fontPackage: package); ///
Review icon (sharp)
- static const IconData review_sharp = IconData(0xe19c, fontFamily: familySharp, fontPackage: package); + static const IconData review_sharp = IconData(0xe1a1, fontFamily: familySharp, fontPackage: package); ///
Road Map icon (sharp)
- static const IconData road_map_sharp = IconData(0xe19d, fontFamily: familySharp, fontPackage: package); + static const IconData road_map_sharp = IconData(0xe1a2, fontFamily: familySharp, fontPackage: package); ///
Rotate Left icon (sharp)
- static const IconData rotate_left_sharp = IconData(0xe19e, fontFamily: familySharp, fontPackage: package); + static const IconData rotate_left_sharp = IconData(0xe1a3, fontFamily: familySharp, fontPackage: package); ///
Rotate Right icon (sharp)
- static const IconData rotate_right_sharp = IconData(0xe19f, fontFamily: familySharp, fontPackage: package); + static const IconData rotate_right_sharp = IconData(0xe1a4, fontFamily: familySharp, fontPackage: package); ///
Rss Feed icon (sharp)
- static const IconData rss_feed_sharp = IconData(0xe1a0, fontFamily: familySharp, fontPackage: package); + static const IconData rss_feed_sharp = IconData(0xe1a5, fontFamily: familySharp, fontPackage: package); ///
Rules icon (sharp)
- static const IconData rules_sharp = IconData(0xe1a1, fontFamily: familySharp, fontPackage: package); + static const IconData rules_sharp = IconData(0xe1a6, fontFamily: familySharp, fontPackage: package); ///
Sad icon (sharp)
- static const IconData sad_sharp = IconData(0xe1a2, fontFamily: familySharp, fontPackage: package); + static const IconData sad_sharp = IconData(0xe1a7, fontFamily: familySharp, fontPackage: package); ///
Satisfied icon (sharp)
- static const IconData satisfied_sharp = IconData(0xe1a3, fontFamily: familySharp, fontPackage: package); + static const IconData satisfied_sharp = IconData(0xe1a8, fontFamily: familySharp, fontPackage: package); ///
Save Alt icon (sharp)
- static const IconData save_alt_sharp = IconData(0xe1a4, fontFamily: familySharp, fontPackage: package); + static const IconData save_alt_sharp = IconData(0xe1a9, fontFamily: familySharp, fontPackage: package); ///
Save Content icon (sharp)
- static const IconData save_content_sharp = IconData(0xe1a5, fontFamily: familySharp, fontPackage: package); + static const IconData save_content_sharp = IconData(0xe1aa, fontFamily: familySharp, fontPackage: package); ///
Save icon (sharp)
- static const IconData save_sharp = IconData(0xe1a6, fontFamily: familySharp, fontPackage: package); + static const IconData save_sharp = IconData(0xe1ab, fontFamily: familySharp, fontPackage: package); ///
Scan Rate icon (sharp)
- static const IconData scan_rate_sharp = IconData(0xe1a7, fontFamily: familySharp, fontPackage: package); + static const IconData scan_rate_sharp = IconData(0xe1ac, fontFamily: familySharp, fontPackage: package); ///
Scanner icon (sharp)
- static const IconData scanner_sharp = IconData(0xe1a8, fontFamily: familySharp, fontPackage: package); + static const IconData scanner_sharp = IconData(0xe1ad, fontFamily: familySharp, fontPackage: package); ///
Schedule icon (sharp)
- static const IconData schedule_sharp = IconData(0xe1a9, fontFamily: familySharp, fontPackage: package); + static const IconData schedule_sharp = IconData(0xe1ae, fontFamily: familySharp, fontPackage: package); ///
School icon (sharp)
- static const IconData school_sharp = IconData(0xe1aa, fontFamily: familySharp, fontPackage: package); + static const IconData school_sharp = IconData(0xe1af, fontFamily: familySharp, fontPackage: package); ///
Screen Rotation icon (sharp)
- static const IconData screen_rotation_sharp = IconData(0xe1ab, fontFamily: familySharp, fontPackage: package); + static const IconData screen_rotation_sharp = IconData(0xe1b0, fontFamily: familySharp, fontPackage: package); ///
Sd Card icon (sharp)
- static const IconData sd_card_sharp = IconData(0xe1ac, fontFamily: familySharp, fontPackage: package); + static const IconData sd_card_sharp = IconData(0xe1b1, fontFamily: familySharp, fontPackage: package); ///
Search icon (sharp)
- static const IconData search_sharp = IconData(0xe1ad, fontFamily: familySharp, fontPackage: package); + static const IconData search_sharp = IconData(0xe1b2, fontFamily: familySharp, fontPackage: package); ///
Security Check icon (sharp)
- static const IconData security_check_sharp = IconData(0xe1ae, fontFamily: familySharp, fontPackage: package); + static const IconData security_check_sharp = IconData(0xe1b3, fontFamily: familySharp, fontPackage: package); ///
Security icon (sharp)
- static const IconData security_sharp = IconData(0xe1af, fontFamily: familySharp, fontPackage: package); + static const IconData security_sharp = IconData(0xe1b4, fontFamily: familySharp, fontPackage: package); ///
Send icon (sharp)
- static const IconData send_sharp = IconData(0xe1b0, fontFamily: familySharp, fontPackage: package); + static const IconData send_sharp = IconData(0xe1b5, fontFamily: familySharp, fontPackage: package); ///
Settings icon (sharp)
- static const IconData settings_sharp = IconData(0xe1b1, fontFamily: familySharp, fontPackage: package); + static const IconData settings_sharp = IconData(0xe1b6, fontFamily: familySharp, fontPackage: package); ///
Shape Recognition icon (sharp)
- static const IconData shape_recognition_sharp = IconData(0xe1b2, fontFamily: familySharp, fontPackage: package); + static const IconData shape_recognition_sharp = IconData(0xe1b7, fontFamily: familySharp, fontPackage: package); ///
Share icon (sharp)
- static const IconData share_sharp = IconData(0xe1b3, fontFamily: familySharp, fontPackage: package); + static const IconData share_sharp = IconData(0xe1b8, fontFamily: familySharp, fontPackage: package); ///
Shared Folder icon (sharp)
- static const IconData shared_folder_sharp = IconData(0xe1b4, fontFamily: familySharp, fontPackage: package); + static const IconData shared_folder_sharp = IconData(0xe1b9, fontFamily: familySharp, fontPackage: package); ///
Ship icon (sharp)
- static const IconData ship_sharp = IconData(0xe1b5, fontFamily: familySharp, fontPackage: package); + static const IconData ship_sharp = IconData(0xe1ba, fontFamily: familySharp, fontPackage: package); ///
Sim Card icon (sharp)
- static const IconData sim_card_sharp = IconData(0xe1b6, fontFamily: familySharp, fontPackage: package); + static const IconData sim_card_sharp = IconData(0xe1bb, fontFamily: familySharp, fontPackage: package); ///
Skip Next icon (sharp)
- static const IconData skip_next_sharp = IconData(0xe1b7, fontFamily: familySharp, fontPackage: package); + static const IconData skip_next_sharp = IconData(0xe1bc, fontFamily: familySharp, fontPackage: package); ///
Skip Previous icon (sharp)
- static const IconData skip_previous_sharp = IconData(0xe1b8, fontFamily: familySharp, fontPackage: package); + static const IconData skip_previous_sharp = IconData(0xe1bd, fontFamily: familySharp, fontPackage: package); ///
Slide Show icon (sharp)
- static const IconData slide_show_sharp = IconData(0xe1b9, fontFamily: familySharp, fontPackage: package); + static const IconData slide_show_sharp = IconData(0xe1be, fontFamily: familySharp, fontPackage: package); ///
Smart Phone icon (sharp)
- static const IconData smart_phone_sharp = IconData(0xe1ba, fontFamily: familySharp, fontPackage: package); + static const IconData smart_phone_sharp = IconData(0xe1bf, fontFamily: familySharp, fontPackage: package); ///
Sms icon (sharp)
- static const IconData sms_sharp = IconData(0xe1bb, fontFamily: familySharp, fontPackage: package); + static const IconData sms_sharp = IconData(0xe1c0, fontFamily: familySharp, fontPackage: package); ///
Snooze icon (sharp)
- static const IconData snooze_sharp = IconData(0xe1bc, fontFamily: familySharp, fontPackage: package); + static const IconData snooze_sharp = IconData(0xe1c1, fontFamily: familySharp, fontPackage: package); ///
Solutions icon (sharp)
- static const IconData solutions_sharp = IconData(0xe1bd, fontFamily: familySharp, fontPackage: package); + static const IconData solutions_sharp = IconData(0xe1c2, fontFamily: familySharp, fontPackage: package); ///
Sort Content icon (sharp)
- static const IconData sort_content_sharp = IconData(0xe1be, fontFamily: familySharp, fontPackage: package); + static const IconData sort_content_sharp = IconData(0xe1c3, fontFamily: familySharp, fontPackage: package); ///
Sort icon (sharp)
- static const IconData sort_sharp = IconData(0xe1bf, fontFamily: familySharp, fontPackage: package); + static const IconData sort_sharp = IconData(0xe1c4, fontFamily: familySharp, fontPackage: package); ///
Speaker icon (sharp)
- static const IconData speaker_sharp = IconData(0xe1c0, fontFamily: familySharp, fontPackage: package); + static const IconData speaker_sharp = IconData(0xe1c5, fontFamily: familySharp, fontPackage: package); ///
Star Half icon (sharp)
- static const IconData star_half_sharp = IconData(0xe1c1, fontFamily: familySharp, fontPackage: package); + static const IconData star_half_sharp = IconData(0xe1c6, fontFamily: familySharp, fontPackage: package); ///
Star Outline icon (sharp)
- static const IconData star_outline_sharp = IconData(0xe1c2, fontFamily: familySharp, fontPackage: package); + static const IconData star_outline_sharp = IconData(0xe1c7, fontFamily: familySharp, fontPackage: package); ///
Star icon (sharp)
- static const IconData star_sharp = IconData(0xe1c3, fontFamily: familySharp, fontPackage: package); + static const IconData star_sharp = IconData(0xe1c8, fontFamily: familySharp, fontPackage: package); ///
Steps icon (sharp)
- static const IconData steps_sharp = IconData(0xe1c4, fontFamily: familySharp, fontPackage: package); + static const IconData steps_sharp = IconData(0xe1c9, fontFamily: familySharp, fontPackage: package); ///
Sticker icon (sharp)
- static const IconData sticker_sharp = IconData(0xe1c5, fontFamily: familySharp, fontPackage: package); + static const IconData sticker_sharp = IconData(0xe1ca, fontFamily: familySharp, fontPackage: package); ///
Stop Circle icon (sharp)
- static const IconData stop_circle_sharp = IconData(0xe1c6, fontFamily: familySharp, fontPackage: package); + static const IconData stop_circle_sharp = IconData(0xe1cb, fontFamily: familySharp, fontPackage: package); ///
Stop icon (sharp)
- static const IconData stop_sharp = IconData(0xe1c7, fontFamily: familySharp, fontPackage: package); + static const IconData stop_sharp = IconData(0xe1cc, fontFamily: familySharp, fontPackage: package); ///
Store Release icon (sharp)
- static const IconData store_release_sharp = IconData(0xe1c8, fontFamily: familySharp, fontPackage: package); + static const IconData store_release_sharp = IconData(0xe1cd, fontFamily: familySharp, fontPackage: package); ///
Store icon (sharp)
- static const IconData store_sharp = IconData(0xe1c9, fontFamily: familySharp, fontPackage: package); + static const IconData store_sharp = IconData(0xe1ce, fontFamily: familySharp, fontPackage: package); ///
Store Swap icon (sharp)
- static const IconData store_swap_sharp = IconData(0xe1ca, fontFamily: familySharp, fontPackage: package); + static const IconData store_swap_sharp = IconData(0xe1cf, fontFamily: familySharp, fontPackage: package); ///
Store Transfer icon (sharp)
- static const IconData store_transfer_sharp = IconData(0xe1cb, fontFamily: familySharp, fontPackage: package); + static const IconData store_transfer_sharp = IconData(0xe1d0, fontFamily: familySharp, fontPackage: package); ///
Straighten icon (sharp)
- static const IconData straighten_sharp = IconData(0xe1cc, fontFamily: familySharp, fontPackage: package); + static const IconData straighten_sharp = IconData(0xe1d1, fontFamily: familySharp, fontPackage: package); ///
Strategy icon (sharp)
- static const IconData strategy_sharp = IconData(0xe1cd, fontFamily: familySharp, fontPackage: package); + static const IconData strategy_sharp = IconData(0xe1d2, fontFamily: familySharp, fontPackage: package); ///
Strikethrough icon (sharp)
- static const IconData strikethrough_sharp = IconData(0xe1ce, fontFamily: familySharp, fontPackage: package); + static const IconData strikethrough_sharp = IconData(0xe1d3, fontFamily: familySharp, fontPackage: package); ///
Subscribe icon (sharp)
- static const IconData subscribe_sharp = IconData(0xe1cf, fontFamily: familySharp, fontPackage: package); + static const IconData subscribe_sharp = IconData(0xe1d4, fontFamily: familySharp, fontPackage: package); ///
Swap icon (sharp)
- static const IconData swap_sharp = IconData(0xe1d0, fontFamily: familySharp, fontPackage: package); + static const IconData swap_sharp = IconData(0xe1d5, fontFamily: familySharp, fontPackage: package); ///
Switch User icon (sharp)
- static const IconData switch_user_sharp = IconData(0xe1d1, fontFamily: familySharp, fontPackage: package); + static const IconData switch_user_sharp = IconData(0xe1d6, fontFamily: familySharp, fontPackage: package); ///
Sync Action icon (sharp)
- static const IconData sync_action_sharp = IconData(0xe1d2, fontFamily: familySharp, fontPackage: package); + static const IconData sync_action_sharp = IconData(0xe1d7, fontFamily: familySharp, fontPackage: package); ///
Sync Disabled icon (sharp)
- static const IconData sync_disabled_sharp = IconData(0xe1d3, fontFamily: familySharp, fontPackage: package); + static const IconData sync_disabled_sharp = IconData(0xe1d8, fontFamily: familySharp, fontPackage: package); ///
Sync icon (sharp)
- static const IconData sync_sharp = IconData(0xe1d4, fontFamily: familySharp, fontPackage: package); + static const IconData sync_sharp = IconData(0xe1d9, fontFamily: familySharp, fontPackage: package); ///
Table icon (sharp)
- static const IconData table_sharp = IconData(0xe1d5, fontFamily: familySharp, fontPackage: package); + static const IconData table_sharp = IconData(0xe1da, fontFamily: familySharp, fontPackage: package); ///
Tablet Mac icon (sharp)
- static const IconData tablet_mac_sharp = IconData(0xe1d6, fontFamily: familySharp, fontPackage: package); + static const IconData tablet_mac_sharp = IconData(0xe1db, fontFamily: familySharp, fontPackage: package); ///
Tablet icon (sharp)
- static const IconData tablet_sharp = IconData(0xe1d7, fontFamily: familySharp, fontPackage: package); + static const IconData tablet_sharp = IconData(0xe1dc, fontFamily: familySharp, fontPackage: package); ///
Tag Enterprise icon (sharp)
- static const IconData tag_enterprise_sharp = IconData(0xe1d8, fontFamily: familySharp, fontPackage: package); + static const IconData tag_enterprise_sharp = IconData(0xe1dd, fontFamily: familySharp, fontPackage: package); ///
Tag icon (sharp)
- static const IconData tag_sharp = IconData(0xe1d9, fontFamily: familySharp, fontPackage: package); + static const IconData tag_sharp = IconData(0xe1de, fontFamily: familySharp, fontPackage: package); ///
Tap To Pay icon (sharp)
- static const IconData tap_to_pay_sharp = IconData(0xe1da, fontFamily: familySharp, fontPackage: package); + static const IconData tap_to_pay_sharp = IconData(0xe1df, fontFamily: familySharp, fontPackage: package); ///
Taxi icon (sharp)
- static const IconData taxi_sharp = IconData(0xe1db, fontFamily: familySharp, fontPackage: package); + static const IconData taxi_sharp = IconData(0xe1e0, fontFamily: familySharp, fontPackage: package); ///
Text Color icon (sharp)
- static const IconData text_color_sharp = IconData(0xe1dc, fontFamily: familySharp, fontPackage: package); + static const IconData text_color_sharp = IconData(0xe1e1, fontFamily: familySharp, fontPackage: package); ///
Tiers icon (sharp)
- static const IconData tiers_sharp = IconData(0xe1dd, fontFamily: familySharp, fontPackage: package); + static const IconData tiers_sharp = IconData(0xe1e2, fontFamily: familySharp, fontPackage: package); ///
Timecard Approve icon (sharp)
- static const IconData timecard_approve_sharp = IconData(0xe1de, fontFamily: familySharp, fontPackage: package); + static const IconData timecard_approve_sharp = IconData(0xe1e3, fontFamily: familySharp, fontPackage: package); ///
Timecard icon (sharp)
- static const IconData timecard_sharp = IconData(0xe1df, fontFamily: familySharp, fontPackage: package); + static const IconData timecard_sharp = IconData(0xe1e4, fontFamily: familySharp, fontPackage: package); ///
Timecard Warning icon (sharp)
- static const IconData timecard_warning_sharp = IconData(0xe1e0, fontFamily: familySharp, fontPackage: package); + static const IconData timecard_warning_sharp = IconData(0xe1e5, fontFamily: familySharp, fontPackage: package); ///
Timer icon (sharp)
- static const IconData timer_sharp = IconData(0xe1e1, fontFamily: familySharp, fontPackage: package); + static const IconData timer_sharp = IconData(0xe1e6, fontFamily: familySharp, fontPackage: package); ///
Toggle Off icon (sharp)
- static const IconData toggle_off_sharp = IconData(0xe1e2, fontFamily: familySharp, fontPackage: package); + static const IconData toggle_off_sharp = IconData(0xe1e7, fontFamily: familySharp, fontPackage: package); ///
Toggle On icon (sharp)
- static const IconData toggle_on_sharp = IconData(0xe1e3, fontFamily: familySharp, fontPackage: package); + static const IconData toggle_on_sharp = IconData(0xe1e8, fontFamily: familySharp, fontPackage: package); ///
Touch icon (sharp)
- static const IconData touch_sharp = IconData(0xe1e4, fontFamily: familySharp, fontPackage: package); + static const IconData touch_sharp = IconData(0xe1e9, fontFamily: familySharp, fontPackage: package); ///
Train icon (sharp)
- static const IconData train_sharp = IconData(0xe1e5, fontFamily: familySharp, fontPackage: package); + static const IconData train_sharp = IconData(0xe1ea, fontFamily: familySharp, fontPackage: package); ///
Transfer icon (sharp)
- static const IconData transfer_sharp = IconData(0xe1e6, fontFamily: familySharp, fontPackage: package); + static const IconData transfer_sharp = IconData(0xe1eb, fontFamily: familySharp, fontPackage: package); ///
Trending Down icon (sharp)
- static const IconData trending_down_sharp = IconData(0xe1e7, fontFamily: familySharp, fontPackage: package); + static const IconData trending_down_sharp = IconData(0xe1ec, fontFamily: familySharp, fontPackage: package); ///
Trending Up icon (sharp)
- static const IconData trending_up_sharp = IconData(0xe1e8, fontFamily: familySharp, fontPackage: package); + static const IconData trending_up_sharp = IconData(0xe1ed, fontFamily: familySharp, fontPackage: package); ///
Tv icon (sharp)
- static const IconData tv_sharp = IconData(0xe1e9, fontFamily: familySharp, fontPackage: package); + static const IconData tv_sharp = IconData(0xe1ee, fontFamily: familySharp, fontPackage: package); ///
Twitter icon (sharp)
- static const IconData twitter_sharp = IconData(0xe1ea, fontFamily: familySharp, fontPackage: package); + static const IconData twitter_sharp = IconData(0xe1ef, fontFamily: familySharp, fontPackage: package); ///
Type icon (sharp)
- static const IconData type_sharp = IconData(0xe1eb, fontFamily: familySharp, fontPackage: package); + static const IconData type_sharp = IconData(0xe1f0, fontFamily: familySharp, fontPackage: package); ///
Uhf Rfid icon (sharp)
- static const IconData uhf_rfid_sharp = IconData(0xe1ec, fontFamily: familySharp, fontPackage: package); + static const IconData uhf_rfid_sharp = IconData(0xe1f1, fontFamily: familySharp, fontPackage: package); ///
Underline icon (sharp)
- static const IconData underline_sharp = IconData(0xe1ed, fontFamily: familySharp, fontPackage: package); + static const IconData underline_sharp = IconData(0xe1f2, fontFamily: familySharp, fontPackage: package); ///
Undo icon (sharp)
- static const IconData undo_sharp = IconData(0xe1ee, fontFamily: familySharp, fontPackage: package); + static const IconData undo_sharp = IconData(0xe1f3, fontFamily: familySharp, fontPackage: package); ///
Unfold Less icon (sharp)
- static const IconData unfold_less_sharp = IconData(0xe1ef, fontFamily: familySharp, fontPackage: package); + static const IconData unfold_less_sharp = IconData(0xe1f4, fontFamily: familySharp, fontPackage: package); ///
Unfold More icon (sharp)
- static const IconData unfold_more_sharp = IconData(0xe1f0, fontFamily: familySharp, fontPackage: package); + static const IconData unfold_more_sharp = IconData(0xe1f5, fontFamily: familySharp, fontPackage: package); ///
Unlock Alt icon (sharp)
- static const IconData unlock_alt_sharp = IconData(0xe1f1, fontFamily: familySharp, fontPackage: package); + static const IconData unlock_alt_sharp = IconData(0xe1f6, fontFamily: familySharp, fontPackage: package); ///
Unlock icon (sharp)
- static const IconData unlock_sharp = IconData(0xe1f2, fontFamily: familySharp, fontPackage: package); + static const IconData unlock_sharp = IconData(0xe1f7, fontFamily: familySharp, fontPackage: package); ///
Unsubscribe icon (sharp)
- static const IconData unsubscribe_sharp = IconData(0xe1f3, fontFamily: familySharp, fontPackage: package); + static const IconData unsubscribe_sharp = IconData(0xe1f8, fontFamily: familySharp, fontPackage: package); ///
Update icon (sharp)
- static const IconData update_sharp = IconData(0xe1f4, fontFamily: familySharp, fontPackage: package); + static const IconData update_sharp = IconData(0xe1f9, fontFamily: familySharp, fontPackage: package); ///
Upload File icon (sharp)
- static const IconData upload_file_sharp = IconData(0xe1f5, fontFamily: familySharp, fontPackage: package); + static const IconData upload_file_sharp = IconData(0xe1fa, fontFamily: familySharp, fontPackage: package); ///
Upload icon (sharp)
- static const IconData upload_sharp = IconData(0xe1f6, fontFamily: familySharp, fontPackage: package); + static const IconData upload_sharp = IconData(0xe1fb, fontFamily: familySharp, fontPackage: package); ///
Usb Alt Device icon (sharp)
- static const IconData usb_alt_device_sharp = IconData(0xe1f7, fontFamily: familySharp, fontPackage: package); + static const IconData usb_alt_device_sharp = IconData(0xe1fc, fontFamily: familySharp, fontPackage: package); ///
Usb Alt icon (sharp)
- static const IconData usb_alt_sharp = IconData(0xe1f8, fontFamily: familySharp, fontPackage: package); + static const IconData usb_alt_sharp = IconData(0xe1fd, fontFamily: familySharp, fontPackage: package); ///
Usb icon (sharp)
- static const IconData usb_sharp = IconData(0xe1f9, fontFamily: familySharp, fontPackage: package); + static const IconData usb_sharp = IconData(0xe1fe, fontFamily: familySharp, fontPackage: package); ///
User Circle icon (sharp)
- static const IconData user_circle_sharp = IconData(0xe1fa, fontFamily: familySharp, fontPackage: package); + static const IconData user_circle_sharp = IconData(0xe1ff, fontFamily: familySharp, fontPackage: package); ///
User Minor icon (sharp)
- static const IconData user_minor_sharp = IconData(0xe1fb, fontFamily: familySharp, fontPackage: package); + static const IconData user_minor_sharp = IconData(0xe200, fontFamily: familySharp, fontPackage: package); ///
User Settings icon (sharp)
- static const IconData user_settings_sharp = IconData(0xe1fc, fontFamily: familySharp, fontPackage: package); + static const IconData user_settings_sharp = IconData(0xe201, fontFamily: familySharp, fontPackage: package); ///
User icon (sharp)
- static const IconData user_sharp = IconData(0xe1fd, fontFamily: familySharp, fontPackage: package); + static const IconData user_sharp = IconData(0xe202, fontFamily: familySharp, fontPackage: package); ///
Vacation icon (sharp)
- static const IconData vacation_sharp = IconData(0xe1fe, fontFamily: familySharp, fontPackage: package); + static const IconData vacation_sharp = IconData(0xe203, fontFamily: familySharp, fontPackage: package); ///
Verified icon (sharp)
- static const IconData verified_sharp = IconData(0xe1ff, fontFamily: familySharp, fontPackage: package); + static const IconData verified_sharp = IconData(0xe204, fontFamily: familySharp, fontPackage: package); ///
Very Satisfied icon (sharp)
- static const IconData very_satisfied_sharp = IconData(0xe200, fontFamily: familySharp, fontPackage: package); + static const IconData very_satisfied_sharp = IconData(0xe205, fontFamily: familySharp, fontPackage: package); ///
Video Camera icon (sharp)
- static const IconData video_camera_sharp = IconData(0xe201, fontFamily: familySharp, fontPackage: package); + static const IconData video_camera_sharp = IconData(0xe206, fontFamily: familySharp, fontPackage: package); ///
Video Off icon (sharp)
- static const IconData video_off_sharp = IconData(0xe202, fontFamily: familySharp, fontPackage: package); + static const IconData video_off_sharp = IconData(0xe207, fontFamily: familySharp, fontPackage: package); ///
Video Play icon (sharp)
- static const IconData video_play_sharp = IconData(0xe203, fontFamily: familySharp, fontPackage: package); + static const IconData video_play_sharp = IconData(0xe208, fontFamily: familySharp, fontPackage: package); ///
Video icon (sharp)
- static const IconData video_sharp = IconData(0xe204, fontFamily: familySharp, fontPackage: package); + static const IconData video_sharp = IconData(0xe209, fontFamily: familySharp, fontPackage: package); ///
Visibility Off icon (sharp)
- static const IconData visibility_off_sharp = IconData(0xe205, fontFamily: familySharp, fontPackage: package); + static const IconData visibility_off_sharp = IconData(0xe20a, fontFamily: familySharp, fontPackage: package); ///
Visibility icon (sharp)
- static const IconData visibility_sharp = IconData(0xe206, fontFamily: familySharp, fontPackage: package); + static const IconData visibility_sharp = IconData(0xe20b, fontFamily: familySharp, fontPackage: package); ///
Volte icon (sharp)
- static const IconData volte_sharp = IconData(0xe207, fontFamily: familySharp, fontPackage: package); + static const IconData volte_sharp = IconData(0xe20c, fontFamily: familySharp, fontPackage: package); ///
Volume Down icon (sharp)
- static const IconData volume_down_sharp = IconData(0xe208, fontFamily: familySharp, fontPackage: package); + static const IconData volume_down_sharp = IconData(0xe20d, fontFamily: familySharp, fontPackage: package); ///
Volume Mute icon (sharp)
- static const IconData volume_mute_sharp = IconData(0xe209, fontFamily: familySharp, fontPackage: package); + static const IconData volume_mute_sharp = IconData(0xe20e, fontFamily: familySharp, fontPackage: package); ///
Volume Off icon (sharp)
- static const IconData volume_off_sharp = IconData(0xe20a, fontFamily: familySharp, fontPackage: package); + static const IconData volume_off_sharp = IconData(0xe20f, fontFamily: familySharp, fontPackage: package); ///
Volume Up icon (sharp)
- static const IconData volume_up_sharp = IconData(0xe20b, fontFamily: familySharp, fontPackage: package); + static const IconData volume_up_sharp = IconData(0xe210, fontFamily: familySharp, fontPackage: package); ///
Warning Outline icon (sharp)
- static const IconData warning_outline_sharp = IconData(0xe20c, fontFamily: familySharp, fontPackage: package); + static const IconData warning_outline_sharp = IconData(0xe211, fontFamily: familySharp, fontPackage: package); ///
Warning icon (sharp)
- static const IconData warning_sharp = IconData(0xe20d, fontFamily: familySharp, fontPackage: package); + static const IconData warning_sharp = IconData(0xe212, fontFamily: familySharp, fontPackage: package); ///
Watch icon (sharp)
- static const IconData watch_sharp = IconData(0xe20e, fontFamily: familySharp, fontPackage: package); + static const IconData watch_sharp = IconData(0xe213, fontFamily: familySharp, fontPackage: package); ///
Wb Image icon (sharp)
- static const IconData wb_image_sharp = IconData(0xe20f, fontFamily: familySharp, fontPackage: package); + static const IconData wb_image_sharp = IconData(0xe214, fontFamily: familySharp, fontPackage: package); ///
Wb icon (sharp)
- static const IconData wb_sharp = IconData(0xe210, fontFamily: familySharp, fontPackage: package); + static const IconData wb_sharp = IconData(0xe215, fontFamily: familySharp, fontPackage: package); ///
World Action icon (sharp)
- static const IconData world_action_sharp = IconData(0xe211, fontFamily: familySharp, fontPackage: package); + static const IconData world_action_sharp = IconData(0xe216, fontFamily: familySharp, fontPackage: package); ///
World icon (sharp)
- static const IconData world_sharp = IconData(0xe212, fontFamily: familySharp, fontPackage: package); + static const IconData world_sharp = IconData(0xe217, fontFamily: familySharp, fontPackage: package); ///
Write icon (sharp)
- static const IconData write_sharp = IconData(0xe213, fontFamily: familySharp, fontPackage: package); + static const IconData write_sharp = IconData(0xe218, fontFamily: familySharp, fontPackage: package); ///
Youtube icon (sharp)
- static const IconData youtube_sharp = IconData(0xe214, fontFamily: familySharp, fontPackage: package); + static const IconData youtube_sharp = IconData(0xe219, fontFamily: familySharp, fontPackage: package); ///
Zero Scale icon (sharp)
- static const IconData zero_scale_sharp = IconData(0xe215, fontFamily: familySharp, fontPackage: package); + static const IconData zero_scale_sharp = IconData(0xe21a, fontFamily: familySharp, fontPackage: package); ///
Zoom In Map icon (sharp)
- static const IconData zoom_in_map_sharp = IconData(0xe216, fontFamily: familySharp, fontPackage: package); + static const IconData zoom_in_map_sharp = IconData(0xe21b, fontFamily: familySharp, fontPackage: package); ///
Zoom In icon (sharp)
- static const IconData zoom_in_sharp = IconData(0xe217, fontFamily: familySharp, fontPackage: package); + static const IconData zoom_in_sharp = IconData(0xe21c, fontFamily: familySharp, fontPackage: package); ///
Zoom Out Map icon (sharp)
- static const IconData zoom_out_map_sharp = IconData(0xe218, fontFamily: familySharp, fontPackage: package); + static const IconData zoom_out_map_sharp = IconData(0xe21d, fontFamily: familySharp, fontPackage: package); ///
Zoom Out icon (sharp)
- static const IconData zoom_out_sharp = IconData(0xe219, fontFamily: familySharp, fontPackage: package); + static const IconData zoom_out_sharp = IconData(0xe21e, fontFamily: familySharp, fontPackage: package); } /// List of all icons. @@ -5037,6 +5082,9 @@ const Map icons = { 'cloud_upload': ZetaIcons.cloud_upload, 'color_fill': ZetaIcons.color_fill, 'columns': ZetaIcons.columns, + 'comms_chat_new': ZetaIcons.comms_chat_new, + 'comms_chat': ZetaIcons.comms_chat, + 'comms_chat_unread': ZetaIcons.comms_chat_unread, 'contactless_pay': ZetaIcons.contactless_pay, 'content': ZetaIcons.content, 'contrast_image': ZetaIcons.contrast_image, @@ -5110,6 +5158,7 @@ const Map icons = { 'full_screen': ZetaIcons.full_screen, 'gif': ZetaIcons.gif, 'glossary': ZetaIcons.glossary, + 'google_drive': ZetaIcons.google_drive, 'grid_off': ZetaIcons.grid_off, 'grid_on': ZetaIcons.grid_on, 'grid_view': ZetaIcons.grid_view, @@ -5253,6 +5302,7 @@ const Map icons = { 'productivity_apps': ZetaIcons.productivity_apps, 'ptt': ZetaIcons.ptt, 'publish': ZetaIcons.publish, + 'push_pin_off': ZetaIcons.push_pin_off, 'push_pin': ZetaIcons.push_pin, 'qr_code': ZetaIcons.qr_code, 'queue': ZetaIcons.queue, diff --git a/lib/generated/icons/zeta-icons-round.ttf b/lib/generated/icons/zeta-icons-round.ttf index e40044dc..c38fcb6c 100644 Binary files a/lib/generated/icons/zeta-icons-round.ttf and b/lib/generated/icons/zeta-icons-round.ttf differ diff --git a/lib/generated/icons/zeta-icons-sharp.ttf b/lib/generated/icons/zeta-icons-sharp.ttf index 6c7e6a5b..98c418cd 100644 Binary files a/lib/generated/icons/zeta-icons-sharp.ttf and b/lib/generated/icons/zeta-icons-sharp.ttf differ diff --git a/lib/src/components/avatar_rail/avatar_rail.dart b/lib/src/components/avatar_rail/avatar_rail.dart index c57feac4..a9066c93 100644 --- a/lib/src/components/avatar_rail/avatar_rail.dart +++ b/lib/src/components/avatar_rail/avatar_rail.dart @@ -88,7 +88,6 @@ class ZetaAvatarRail extends StatelessWidget { children: [ SingleChildScrollView( scrollDirection: Axis.horizontal, - hitTestBehavior: HitTestBehavior.translucent, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/src/components/avatars/avatar.dart b/lib/src/components/avatars/avatar.dart index b9e5c14f..fea42b13 100644 --- a/lib/src/components/avatars/avatar.dart +++ b/lib/src/components/avatars/avatar.dart @@ -35,6 +35,8 @@ enum ZetaAvatarSize { } /// An avatar is a visual representation of a user or entity. +/// +/// It is recommended to use [ZetaAvatar] with [ZetaAvatarBadge] for status and notification badges, but any widget can be used. /// {@category Components} /// /// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?type=design&node-id=20816-388 @@ -51,9 +53,9 @@ class ZetaAvatar extends ZetaStatelessWidget { this.lowerBadge, this.upperBadge, this.borderColor, - this.semanticLabel = 'avatar', - this.semanticUpperBadgeLabel = 'upperBadge', - this.semanticLowerBadgeLabel = 'lowerBadge', + this.semanticLabel, + this.semanticUpperBadgeLabel, + this.semanticLowerBadgeLabel, this.initialTextStyle, this.label, this.labelTextStyle, @@ -137,27 +139,27 @@ class ZetaAvatar extends ZetaStatelessWidget { final Color? borderColor; /// Status badge shown at lower right corner of avatar. - final ZetaAvatarBadge? lowerBadge; + final Widget? lowerBadge; /// Notification Badge shown at top right corner of avatar. - final ZetaAvatarBadge? upperBadge; + final Widget? upperBadge; /// Value passed into wrapping [Semantics] widget. /// /// {@template zeta-widget-semantic-label} /// This label is used by accessibility frameworks (e.g. TalkBack on Android) to describe the component. /// {@endtemplate} - final String semanticLabel; + final String? semanticLabel; /// Value passed into wrapping [Semantics] widget for lower badge. /// /// {@macro zeta-widget-semantic-label} - final String semanticLowerBadgeLabel; + final String? semanticLowerBadgeLabel; /// Value passed into wrapping [Semantics] widget for upper badge. /// /// {@macro zeta-widget-semantic-label} - final String semanticUpperBadgeLabel; + final String? semanticUpperBadgeLabel; /// Text style for initials. /// @@ -191,8 +193,8 @@ class ZetaAvatar extends ZetaStatelessWidget { String? initials, Color? backgroundColor, Color? borderColor, - ZetaAvatarBadge? lowerBadge, - ZetaAvatarBadge? upperBadge, + Widget? lowerBadge, + Widget? upperBadge, String? label, TextStyle? labelTextStyle, int? labelMaxLines, @@ -226,15 +228,17 @@ class ZetaAvatar extends ZetaStatelessWidget { final innerChild = image ?? (initials != null ? Center( - child: Text( - initials!, - style: initialTextStyle ?? - TextStyle( - fontSize: size.fontSize(context), - letterSpacing: Zeta.of(context).spacing.none, - color: backgroundColor?.onColor, - fontWeight: FontWeight.w500, - ), + child: FittedBox( + child: Text( + initials!, + style: initialTextStyle ?? + TextStyle( + fontSize: size.fontSize(context), + letterSpacing: Zeta.of(context).spacing.none, + color: backgroundColor?.onColor, + fontWeight: FontWeight.w500, + ), + ), ), ) : null); @@ -287,41 +291,38 @@ class ZetaAvatar extends ZetaStatelessWidget { // ), Stack( children: [ - GestureDetector( - onTap: onTap, - child: Container( - width: pSize, - height: pSize, - decoration: BoxDecoration( - border: borderColor != null ? Border.all(color: borderColor!, width: 0) : null, - borderRadius: Zeta.of(context).radius.full, - color: backgroundColor ?? - (_showPlaceholder ? zetaColors.surfacePrimary : zetaColors.primitives.cool.shade20), - ), - child: borderColor != null - ? Container( - width: pSize, - height: pSize, - decoration: BoxDecoration( - color: backgroundColor ?? zetaColors.surfaceHover, - border: Border.all(color: borderColor!, width: borderSize(context)), - borderRadius: Zeta.of(context).radius.full, - ), - child: ClipRRect( - borderRadius: Zeta.of(context).radius.full, + MouseRegion( + cursor: onTap != null ? SystemMouseCursors.click : SystemMouseCursors.basic, + child: GestureDetector( + onTap: onTap, + child: Container( + width: pSize, + height: pSize, + decoration: BoxDecoration( + border: borderColor != null ? Border.all(color: borderColor!, width: 0) : null, + borderRadius: Zeta.of(context).radius.full, + color: backgroundColor ?? + (_showPlaceholder ? zetaColors.surfacePrimary : zetaColors.primitives.cool.shade20), + ), + child: borderColor != null + ? Container( + width: pSize, + height: pSize, + decoration: BoxDecoration( + color: backgroundColor ?? zetaColors.surfaceHover, + border: Border.all(color: borderColor!, width: borderSize(context)), + borderRadius: Zeta.of(context).radius.full, + ), child: innerContent, - ), - ) - : DecoratedBox( - decoration: BoxDecoration( - borderRadius: Zeta.of(context).radius.full, - color: backgroundColor ?? zetaColors.surfaceHover, - ), - child: ClipRRect( - borderRadius: Zeta.of(context).radius.full, + ) + : DecoratedBox( + decoration: BoxDecoration( + borderRadius: Zeta.of(context).radius.full, + color: backgroundColor ?? zetaColors.surfaceHover, + ), child: innerContent, ), - ), + ), ), ), if (upperBadge != null) @@ -329,9 +330,9 @@ class ZetaAvatar extends ZetaStatelessWidget { right: Zeta.of(context).spacing.none, child: Semantics( value: semanticLowerBadgeLabel, - child: upperBadge!.copyWith( - size: size, - ), + child: upperBadge.runtimeType == ZetaAvatarBadge + ? (upperBadge! as ZetaAvatarBadge).copyWith(size: size) + : upperBadge, ), ), if (lowerBadge != null) @@ -340,7 +341,9 @@ class ZetaAvatar extends ZetaStatelessWidget { bottom: Zeta.of(context).spacing.none, child: Semantics( value: semanticLowerBadgeLabel, - child: lowerBadge!.copyWith(size: size), + child: lowerBadge.runtimeType == ZetaAvatarBadge + ? (lowerBadge! as ZetaAvatarBadge).copyWith(size: size) + : lowerBadge, ), ), ], @@ -373,8 +376,8 @@ class ZetaAvatar extends ZetaStatelessWidget { properties ..add(DiagnosticsProperty('size', size)) ..add(DiagnosticsProperty('name', initials)) - ..add(DiagnosticsProperty('specialStatus', lowerBadge)) - ..add(DiagnosticsProperty('badge', upperBadge)) + ..add(DiagnosticsProperty('lowerBadge', lowerBadge)) + ..add(DiagnosticsProperty('upperBadge', upperBadge)) ..add(DiagnosticsProperty('backgroundColor', backgroundColor)) ..add(ColorProperty('statusColor', borderColor)) ..add(StringProperty('semanticUpperBadgeValue', semanticUpperBadgeLabel)) @@ -425,20 +428,26 @@ extension on ZetaAvatarSize { } double borderSize(BuildContext context) { + // TODO(UX-1304): Awaiting updated design specs for border size switch (this) { case ZetaAvatarSize.xxxl: - return 11; + return 11.12; case ZetaAvatarSize.xxl: + return 6.67; case ZetaAvatarSize.xl: + return 4.45; case ZetaAvatarSize.l: + return 3.56; case ZetaAvatarSize.m: - return Zeta.of(context).spacing.minimum; - + return 2.66; case ZetaAvatarSize.s: + return 2.22; case ZetaAvatarSize.xs: + return 2; case ZetaAvatarSize.xxs: + return 1.78; case ZetaAvatarSize.xxxs: - return ZetaBorders.medium; + return 1.33; } } diff --git a/lib/src/components/badges/indicator.dart b/lib/src/components/badges/indicator.dart index b517cae5..a6ad7d63 100644 --- a/lib/src/components/badges/indicator.dart +++ b/lib/src/components/badges/indicator.dart @@ -92,6 +92,7 @@ class ZetaIndicator extends ZetaStatelessWidget { int? value, bool? inverse, Key? key, + String? semanticLabel, }) { return ZetaIndicator( key: key ?? this.key, @@ -100,6 +101,7 @@ class ZetaIndicator extends ZetaStatelessWidget { icon: icon ?? this.icon, value: value ?? this.value, inverse: inverse ?? this.inverse, + semanticLabel: semanticLabel ?? this.semanticLabel, ); } @@ -112,18 +114,21 @@ class ZetaIndicator extends ZetaStatelessWidget { final sizePixels = _getSizePixels(size, type, context); return Semantics( - value: semanticLabel ?? value?.toString() ?? '', + label: semanticLabel, + container: true, child: Container( width: sizePixels + Zeta.of(context).spacing.minimum, height: sizePixels + Zeta.of(context).spacing.minimum, - decoration: BoxDecoration( - border: Border.all( - width: ZetaBorders.medium, - color: Zeta.of(context).colors.borderPure, - ), - color: (inverse ? foregroundColor : Colors.transparent), - borderRadius: Zeta.of(context).radius.full, - ), + decoration: type == ZetaIndicatorType.icon + ? BoxDecoration( + border: Border.all( + width: ZetaBorders.medium, + color: Zeta.of(context).colors.borderPure, + ), + color: (inverse ? foregroundColor : Colors.transparent), + borderRadius: Zeta.of(context).radius.full, + ) + : null, child: Center( child: Container( width: sizePixels, @@ -156,11 +161,15 @@ class ZetaIndicator extends ZetaStatelessWidget { ); case ZetaIndicatorType.notification: return Center( - child: Text( - value.formatMaxChars(), - style: ZetaTextStyles.labelIndicator.copyWith( - color: foregroundColor, - height: size == ZetaWidgetSize.large ? 1 : (12 / 16), + child: ExcludeSemantics( + excluding: semanticLabel != null, + child: Text( + value.formatMaxChars(), + style: ZetaTextStyles.labelIndicator.copyWith( + color: foregroundColor, + fontSize: size == ZetaWidgetSize.large ? 12 : 11, + height: size == ZetaWidgetSize.large ? 1 : (0.5 / 16), + ), ), ), ); diff --git a/lib/src/components/banner/banner.dart b/lib/src/components/banner/banner.dart index cbd5a35b..984f8812 100644 --- a/lib/src/components/banner/banner.dart +++ b/lib/src/components/banner/banner.dart @@ -3,14 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../../../zeta_flutter.dart'; -/// [ZetaBanner] type. -@Deprecated('Use ZetaBannerStatus instead. ' 'This widget has been renamed as of 0.11.0') -typedef ZetaSystemBannerStatus = ZetaBannerStatus; - -/// Zeta Banner. Extends [MaterialBanner]. -@Deprecated('Use ZetaBanner instead. ' 'This widget has been renamed as of 0.11.0') -typedef ZetaSystemBanner = ZetaBanner; - /// [ZetaBanner] type enum ZetaBannerStatus { /// Primary background. @@ -49,7 +41,10 @@ class ZetaBanner extends MaterialBanner { ZetaBannerStatus type = ZetaBannerStatus.primary, /// Whether the title should be centered. - bool titleStart = false, + bool titleCenter = false, + + /// Whether the title should be centered. + @Deprecated('Use titleCenter instead. ' 'This attribute has been renamed as of 0.18.0') bool? titleStart, /// The trailing widget for the banner. Widget? trailing, @@ -63,81 +58,90 @@ class ZetaBanner extends MaterialBanner { String? semanticLabel, }) : super( dividerColor: Colors.transparent, - content: () { - final colors = Zeta.of(context).colors; - final backgroundColor = type.backgroundColor(context); - final foregroundColor = colors.mainInverse; - - if (!kIsWeb && PlatformIs.android && context.mounted) { - // ignore: invalid_use_of_visible_for_testing_member - final statusBarColor = SystemChrome.latestStyle?.statusBarColor; - if (statusBarColor != backgroundColor) { - SystemChrome.setSystemUIOverlayStyle( - SystemUiOverlayStyle( - statusBarColor: backgroundColor, - systemNavigationBarIconBrightness: Brightness.light, - ), - ); + content: Builder( + builder: (context) { + final backgroundColor = _backgroundColorFromType(context, type); + final foregroundColor = backgroundColor.onColor; + if (!kIsWeb && PlatformIs.android && context.mounted) { + // ignore: invalid_use_of_visible_for_testing_member + final statusBarColor = SystemChrome.latestStyle?.statusBarColor; + if (statusBarColor != backgroundColor) { + SystemChrome.setSystemUIOverlayStyle( + SystemUiOverlayStyle( + statusBarColor: backgroundColor, + systemNavigationBarIconBrightness: backgroundColor.isDark ? Brightness.light : Brightness.dark, + ), + ); + } } - } - - return ZetaRoundedScope( - rounded: rounded ?? context.rounded, - child: Semantics( - label: semanticLabel ?? title, - child: DefaultTextStyle( - style: ZetaTextStyles.labelLarge.copyWith( - color: foregroundColor, - overflow: TextOverflow.ellipsis, - ), - child: Row( - mainAxisAlignment: titleStart ? MainAxisAlignment.center : MainAxisAlignment.start, - children: [ - if (leadingIcon != null) + + // ignore: no_leading_underscores_for_local_identifiers + final _titleCenter = titleStart ?? titleCenter; + return ZetaRoundedScope( + rounded: rounded ?? context.rounded, + child: Semantics( + label: semanticLabel ?? title, + child: DefaultTextStyle( + style: ZetaTextStyles.labelLarge.copyWith( + color: foregroundColor, + overflow: TextOverflow.ellipsis, + ), + child: Stack( + alignment: _titleCenter ? Alignment.center : Alignment.centerLeft, + children: [ + if (leadingIcon != null) + Positioned( + left: 0, + child: Padding( + padding: EdgeInsets.only(right: Zeta.of(context).spacing.small), + child: Icon( + leadingIcon, + color: foregroundColor, + size: Zeta.of(context).spacing.xl_2, + ), + ), + ), Padding( - padding: EdgeInsets.only(right: Zeta.of(context).spacing.small), - child: Icon( - leadingIcon, - color: foregroundColor, - size: Zeta.of(context).spacing.xl_2, + padding: + !_titleCenter && leadingIcon != null ? const EdgeInsets.only(left: 40) : EdgeInsets.zero, + child: Text( + title, + style: ZetaTextStyles.labelLarge.copyWith( + color: Zeta.of(context).colors.mainInverse, + ), ), ), - Flexible( - child: Text( - title, - style: ZetaTextStyles.labelLarge.copyWith( - color: Zeta.of(context).colors.mainInverse, + if (trailing != null) + Positioned( + right: 0, + child: IconTheme( + data: IconThemeData(color: _backgroundColorFromType(context, type).onColor), + child: trailing, + ), ), - ), - ), - ], + ], + ), ), ), - ), - ); - }(), - backgroundColor: type.backgroundColor(context), - actions: [ - IconTheme( - data: IconThemeData(color: Zeta.of(context).colors.mainInverse), - child: trailing ?? const Nothing(), - ), - ], + ); + }, + ), + backgroundColor: _backgroundColorFromType(context, type), + actions: [const Nothing()], ); -} -extension on ZetaBannerStatus { - Color backgroundColor(BuildContext context) { - final colors = Zeta.of(context).colors; - switch (this) { + static ZetaColorSwatch _backgroundColorFromType(BuildContext context, ZetaBannerStatus type) { + final zeta = Zeta.of(context); + + switch (type) { case ZetaBannerStatus.primary: - return colors.surfacePrimary; + return zeta.colors.primitives.primary; case ZetaBannerStatus.positive: - return colors.surfacePositive; + return zeta.colors.primitives.green; case ZetaBannerStatus.warning: - return colors.surfaceWarning; + return zeta.colors.primitives.orange; case ZetaBannerStatus.negative: - return colors.surfaceNegative; + return zeta.colors.primitives.red; } } } diff --git a/lib/src/components/breadcrumb/breadcrumb.dart b/lib/src/components/breadcrumb/breadcrumb.dart new file mode 100644 index 00000000..bfaf1824 --- /dev/null +++ b/lib/src/components/breadcrumb/breadcrumb.dart @@ -0,0 +1,367 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import '../../../zeta_flutter.dart'; + +/// The breadcrumb is a secondary navigation pattern that helps a user understand the hierarchy among levels and navigate back through them. +/// +/// [children] should consist of [ZetaBreadcrumbItem]s. +/// +/// {@category Components} +/// +/// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-5&node-type=canvas&m=dev +/// +/// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/breadcrumbs +class ZetaBreadcrumb extends ZetaStatefulWidget { + ///Constructor for [ZetaBreadcrumb] + const ZetaBreadcrumb({ + super.key, + super.rounded, + required this.children, + this.moreSemanticLabel, + this.maxItemsShown = 2, + }); + + /// Breadcrumb children + final List children; + + /// Semantic label passed to [_TruncatedItem]. + /// {@macro zeta-widget-semantic-label} + final String? moreSemanticLabel; + + /// Maximum number of items shown in the breadcrumb that aren't truncated. + final int maxItemsShown; + + @override + State createState() => _ZetaBreadcrumbsState(); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(IterableProperty('children', children)) + ..add(DiagnosticsProperty('rounded', rounded)) + ..add(StringProperty('moreSemanticLabel', moreSemanticLabel)) + ..add(IntProperty('maxItemsShown', maxItemsShown)); + } +} + +class _ZetaBreadcrumbsState extends State { + late int _selectedIndex; + late List _children; + + @override + void initState() { + super.initState(); + + _selectedIndex = widget.children.length - 1; + _children = [...widget.children]; + } + + @override + void didUpdateWidget(ZetaBreadcrumb oldWidget) { + super.didUpdateWidget(oldWidget); + + _selectedIndex = widget.children.length - 1; + _children = [...widget.children]; + } + + @override + Widget build(BuildContext context) { + final rounded = context.rounded; + return ZetaRoundedScope( + rounded: rounded, + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: renderedChildren(_children) + .divide( + Row( + children: [ + SizedBox(width: Zeta.of(context).spacing.small), + ZetaIcon( + ZetaIcons.chevron_right, + size: Zeta.of(context).spacing.xl, + rounded: rounded, + color: Zeta.of(context).colors.mainSubtle, + ), + SizedBox(width: Zeta.of(context).spacing.small), + ], + ), + ) + .toList(), + ), + ), + ); + } + + ///Creates breadcrumb widget + ZetaBreadcrumbItem createBreadCrumb(ZetaBreadcrumbItem input, int index) { + return ZetaBreadcrumbItem( + label: input.label, + isSelected: _selectedIndex == index, + icon: input.icon, + onPressed: () { + setState(() { + _selectedIndex = index; + _children = _children.sublist(0, index + 1); + }); + input.onPressed.call(); + }, + ); + } + + List renderedChildren(List children) { + final List returnList = []; + if (children.length > widget.maxItemsShown) { + returnList.add(createBreadCrumb(children.first, 0)); + + final List truncatedChildren = []; + + for (final (index, element) in children.sublist(1, children.length - (widget.maxItemsShown - 1)).indexed) { + truncatedChildren.add(createBreadCrumb(element, index + 1)); + } + returnList + .add(_TruncatedItem(semanticLabel: widget.moreSemanticLabel ?? 'View More', children: truncatedChildren)); + + for (final (index, element) in children.sublist(children.length - (widget.maxItemsShown - 1)).indexed) { + returnList.add(createBreadCrumb(element, index + children.length - (widget.maxItemsShown) + 1)); + } + } else { + for (final (index, element) in children.indexed) { + returnList.add(createBreadCrumb(element, index)); + } + } + return returnList; + } +} + +/// Class for untruncated [ZetaBreadcrumbItem]. +/// +/// Should be a child of [ZetaBreadcrumb]. +class ZetaBreadcrumbItem extends ZetaStatelessWidget { + ///Constructor for [ZetaBreadcrumbItem] + ZetaBreadcrumbItem({ + super.key, + super.rounded, + required this.label, + this.icon, + this.isSelected = false, + required this.onPressed, + this.semanticLabel, + }); + + /// [ZetaBreadcrumbItem] label. + final String label; + + /// Selected icon. + final IconData? icon; + + /// Is [ZetaBreadcrumbItem] selected. + final bool isSelected; + + /// Handles press for [ZetaBreadcrumbItem] + final VoidCallback onPressed; + + /// Label passed to wrapping [Semantics] widget. + /// + /// {@macro zeta-widget-semantic-label} + /// + /// If null, [label] is used. + final String? semanticLabel; + + // /// If true, the [ZetaBreadcrumbItem] icon will be rounded. + // final bool? rounded; + + /// Controller for [InkWell] states to control hover and pressed states. + final controller = WidgetStatesController(); + + @override + Widget build(BuildContext context) { + final colors = Zeta.of(context).colors; + final rounded = context.rounded; + return ZetaRoundedScope( + rounded: rounded, + child: Semantics( + label: semanticLabel ?? label, + selected: isSelected, + child: InkWell( + statesController: controller, + onTap: onPressed, + enableFeedback: false, + splashColor: Colors.transparent, + overlayColor: WidgetStateProperty.resolveWith((states) { + return Colors.transparent; + }), + child: ValueListenableBuilder( + valueListenable: controller, + builder: (context, value, child) => Row( + children: [ + if (icon != null) + ZetaIcon( + icon, + rounded: rounded, + color: getColor(value, colors), + ), + SizedBox( + width: Zeta.of(context).spacing.small, + ), + Text( + label, + style: ZetaTextStyles.bodySmall.apply(color: getColor(controller.value, colors)), + ), + if (child != null) child, + ], + ), + ), + ), + ), + ); + } + + /// Get color of breadcrumb based on state. + Color getColor(Set states, ZetaSemanticColors colors) { + if (states.contains(WidgetState.hovered)) { + return colors.primitives.blue; + } + if (isSelected) return colors.primitives.pure.shade1000; + return colors.mainSubtle; + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add( + DiagnosticsProperty( + 'controller', + controller, + ), + ) + ..add(StringProperty('label', label)) + ..add(DiagnosticsProperty('icon', icon)) + ..add(DiagnosticsProperty('isSelected', isSelected)) + ..add(ObjectFlagProperty.has('onPressed', onPressed)) + ..add(StringProperty('semanticLabel', semanticLabel)) + ..add(DiagnosticsProperty('rounded', rounded)); + } +} + +/// Class for [_TruncatedItem] +@Deprecated('This functionality is not needed anymore. Use [ZetaBreadcrumb] instead. ' 'Deprecated since 0.14.1') +typedef TruncatedItem = _TruncatedItem; + +class _TruncatedItem extends StatefulWidget { + ///Constructor for [_TruncatedItem] + const _TruncatedItem({ + required this.children, + required this.semanticLabel, + }); + + ///Breadcrumb children + final List children; + + /// Label passed to wrapping [Semantics] widget. + /// + /// {@macro zeta-widget-semantic-label} + final String semanticLabel; + + @override + State<_TruncatedItem> createState() => _TruncatedItemState(); + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(StringProperty('semanticLabel', semanticLabel)); + } +} + +class _TruncatedItemState extends State<_TruncatedItem> { + bool _expanded = false; + + @override + Widget build(BuildContext context) { + final colors = Zeta.of(context).colors; + final rounded = context.rounded; + + return _expanded + ? expandedBreadcrumb() + : ZetaRoundedScope( + rounded: rounded, + child: Semantics( + label: widget.semanticLabel, + button: true, + excludeSemantics: true, + child: FilledButton( + onPressed: () { + setState(() { + _expanded = true; + }); + }, + style: ButtonStyle( + backgroundColor: WidgetStateProperty.resolveWith((states) { + if (states.contains(WidgetState.hovered)) { + return colors.surfaceHover; + } + if (states.contains(WidgetState.pressed)) { + return colors.primitives.primary.shade10; + } + if (states.contains(WidgetState.disabled)) { + return colors.surfaceDisabled; + } + return colors.primitives.warm.shade10; + }), + foregroundColor: WidgetStateProperty.resolveWith((states) { + if (states.contains(WidgetState.disabled)) { + return colors.mainDisabled; + } + return colors.mainDefault; + }), + shape: WidgetStatePropertyAll( + RoundedRectangleBorder( + borderRadius: (rounded ? Zeta.of(context).radius.minimal : Zeta.of(context).radius.none), + ), + ), + side: WidgetStateProperty.resolveWith((states) { + if (states.contains(WidgetState.focused)) { + return BorderSide( + width: ZetaBorders.medium, + color: colors.primitives.primary.shade100, + ); + } + if (states.isEmpty) { + return BorderSide(color: colors.borderDefault, width: 0.5); + } + return null; + }), + padding: WidgetStateProperty.all(EdgeInsets.zero), + minimumSize: WidgetStateProperty.all(Size.zero), + elevation: WidgetStatePropertyAll(Zeta.of(context).spacing.none), + ), + child: Icon( + rounded ? ZetaIcons.more_horizontal_round : ZetaIcons.more_horizontal_sharp, + size: Zeta.of(context).spacing.large, + ).paddingHorizontal(Zeta.of(context).spacing.small).paddingVertical(Zeta.of(context).spacing.minimum), + ), + ), + ); + } + + Widget expandedBreadcrumb() { + return Row( + children: widget.children + .divide( + Row( + children: [ + SizedBox(width: Zeta.of(context).spacing.small), + ZetaIcon( + ZetaIcons.chevron_right, + size: Zeta.of(context).spacing.xl, + color: Zeta.of(context).colors.mainSubtle, + ), + SizedBox(width: Zeta.of(context).spacing.small), + ], + ), + ) + .toList(), + ); + } +} diff --git a/lib/src/components/breadcrumbs/breadcrumbs.dart b/lib/src/components/breadcrumbs/breadcrumbs.dart deleted file mode 100644 index fbde10c7..00000000 --- a/lib/src/components/breadcrumbs/breadcrumbs.dart +++ /dev/null @@ -1,368 +0,0 @@ -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import '../../../zeta_flutter.dart'; - -// TODO(UX-1131): Refactor this to make BreadCrumbItem a class, not a widget. - -/// The breadcrumb is a secondary navigation pattern that helps a user understand the hierarchy among levels and navigate back through them. -/// -/// [children] should consist of [ZetaBreadCrumb]s. -/// -/// {@category Components} -/// -/// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=229-5&node-type=canvas&m=dev -/// -/// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/breadcrumbs -class ZetaBreadCrumbs extends ZetaStatefulWidget { - ///Constructor for [ZetaBreadCrumbs] - const ZetaBreadCrumbs({ - super.key, - super.rounded, - required this.children, - this.activeIcon, - this.moreSemanticLabel, - }); - - /// Breadcrumb children - final List children; - - /// Active icon for breadcrumb - final IconData? activeIcon; - - /// Label passed to wrapping [Semantics] widget. - /// {@macro zeta-widget-semantic-label} - final String? moreSemanticLabel; - - @override - State createState() => _ZetaBreadCrumbsState(); - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(IterableProperty('children', children)) - ..add(DiagnosticsProperty('rounded', rounded)) - ..add(DiagnosticsProperty('activeIcon', activeIcon)) - ..add(StringProperty('moreSemanticLabel', moreSemanticLabel)); - } -} - -class _ZetaBreadCrumbsState extends State { - late int _selectedIndex; - late List _children; - - @override - void initState() { - super.initState(); - _selectedIndex = widget.children.length - 1; - _children = [...widget.children]; - } - - @override - void didUpdateWidget(ZetaBreadCrumbs oldWidget) { - super.didUpdateWidget(oldWidget); - if (widget.children.length != _children.length) { - _selectedIndex = widget.children.length - 1; - _children = [...widget.children]; - } - } - - @override - Widget build(BuildContext context) { - final rounded = context.rounded; - return ZetaRoundedScope( - rounded: rounded, - child: SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: renderedChildren(widget.children) - .divide( - Row( - children: [ - SizedBox(width: Zeta.of(context).spacing.small), - ZetaIcon(ZetaIcons.chevron_right, size: Zeta.of(context).spacing.xl), - SizedBox(width: Zeta.of(context).spacing.small), - ], - ), - ) - .toList(), - ), - ), - ); - } - - ///Creates breadcrumb widget - ZetaBreadCrumb createBreadCrumb(ZetaBreadCrumb input, int index) { - return ZetaBreadCrumb( - label: input.label, - isSelected: _selectedIndex == index, - onPressed: () { - setState(() { - _selectedIndex = index; - }); - input.onPressed.call(); - }, - activeIcon: widget.activeIcon, - ); - } - - List renderedChildren(List children) { - final List returnList = []; - if (children.length > 3) { - returnList.add(createBreadCrumb(children.first, 0)); - - final List truncatedChildren = []; - - for (final (index, element) in children.sublist(1, children.length - 1).indexed) { - truncatedChildren.add(createBreadCrumb(element, index + 1)); - } - returnList - ..add(_BreadCrumbsTruncated(semanticLabel: widget.moreSemanticLabel, children: truncatedChildren)) - ..add(createBreadCrumb(children.last, children.length - 1)); - } else { - for (final (index, element) in children.indexed) { - returnList.add(createBreadCrumb(element, index)); - } - } - return returnList; - } -} - -// TODO(UX-1131): Rename to breadcrumbitem - -/// Class for untruncated [ZetaBreadCrumb]. -/// -/// Should be a child of [ZetaBreadCrumbs]. -class ZetaBreadCrumb extends StatefulWidget { - ///Constructor for [ZetaBreadCrumb] - const ZetaBreadCrumb({ - super.key, - required this.label, - this.icon, - this.isSelected = false, - required this.onPressed, - this.activeIcon, - this.semanticLabel, - }); - - /// [ZetaBreadCrumb] label. - final String label; - - /// Selected icon. - final IconData? icon; - - /// Is [ZetaBreadCrumb] selected. - final bool isSelected; - - /// Handles press for [ZetaBreadCrumb] - final VoidCallback onPressed; - - /// Active icon for [ZetaBreadCrumb] - final IconData? activeIcon; - - /// Label passed to wrapping [Semantics] widget. - /// - /// {@macro zeta-widget-semantic-label} - /// - /// If null, [label] is used. - final String? semanticLabel; - - @override - State createState() => _ZetaBreadCrumbState(); - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(ObjectFlagProperty.has('onPressed', onPressed)) - ..add(StringProperty('label', label)) - ..add(DiagnosticsProperty('icon', icon)) - ..add(DiagnosticsProperty('isSelected', isSelected)) - ..add(DiagnosticsProperty('activeIcon', activeIcon)) - ..add(StringProperty('semanticLabel', semanticLabel)); - } -} - -class _ZetaBreadCrumbState extends State { - final controller = WidgetStatesController(); - - @override - void initState() { - super.initState(); - controller.addListener(() { - if (context.mounted && mounted) { - setState(() {}); - } - }); - } - - @override - Widget build(BuildContext context) { - final colors = Zeta.of(context).colors; - - final foregroundColor = getColor(controller.value, colors); - return Semantics( - label: widget.semanticLabel ?? widget.label, - selected: widget.isSelected, - child: InkWell( - statesController: controller, - onTap: widget.onPressed, - enableFeedback: false, - splashColor: Colors.transparent, - overlayColor: WidgetStateProperty.resolveWith((states) { - return Colors.transparent; - }), - child: Row( - children: [ - if (widget.isSelected) - Icon( - widget.activeIcon ?? ZetaIcons.star_round, - color: foregroundColor, - ), - SizedBox(width: Zeta.of(context).spacing.small), - Text( - widget.label, - style: ZetaTextStyles.bodySmall.apply(color: foregroundColor), - ), - ], - ), - ), - ); - } - - /// Get color of breadcrumb based on state. - Color getColor(Set states, ZetaSemanticColors colors) { - if (states.contains(WidgetState.hovered)) { - return colors.mainPrimary; - } - if (widget.isSelected) return colors.mainDefault; - return colors.mainSubtle; - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties.add( - DiagnosticsProperty( - 'controller', - controller, - ), - ); - } -} - -/// Class for [_BreadCrumbsTruncated] -@Deprecated('This functionality is not needed anymore. Use [ZetaBreadCrumb] instead. ' 'Deprecated since 0.14.1') -typedef BreadCrumbsTruncated = _BreadCrumbsTruncated; - -class _BreadCrumbsTruncated extends StatefulWidget { - ///Constructor for [_BreadCrumbsTruncated] - const _BreadCrumbsTruncated({ - required this.children, - this.semanticLabel, - }); - - ///Breadcrumb children - final List children; - - /// Label passed to wrapping [Semantics] widget. - /// - /// {@macro zeta-widget-semantic-label} - final String? semanticLabel; - - @override - State<_BreadCrumbsTruncated> createState() => _BreadCrumbsTruncatedState(); - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties.add(StringProperty('semanticLabel', semanticLabel)); - } -} - -class _BreadCrumbsTruncatedState extends State<_BreadCrumbsTruncated> { - bool _expanded = false; - - @override - Widget build(BuildContext context) { - final colors = Zeta.of(context).colors; - final rounded = context.rounded; - - return _expanded - ? expandedBreadcrumb() - : Semantics( - label: widget.semanticLabel, - button: true, - child: FilledButton( - onPressed: () { - setState(() { - _expanded = true; - }); - }, - style: ButtonStyle( - backgroundColor: WidgetStateProperty.resolveWith((states) { - if (states.contains(WidgetState.hovered)) { - return colors.surfaceHover; - } - if (states.contains(WidgetState.pressed)) { - return colors.surfaceSelected; - } - if (states.contains(WidgetState.disabled)) { - return colors.surfaceDisabled; - } - return colors.surfaceWarm; - }), - foregroundColor: WidgetStateProperty.resolveWith((states) { - if (states.contains(WidgetState.disabled)) { - return colors.mainDisabled; - } - return colors.mainDefault; - }), - shape: WidgetStatePropertyAll( - RoundedRectangleBorder( - borderRadius: (rounded ? Zeta.of(context).radius.minimal : Zeta.of(context).radius.none), - ), - ), - side: WidgetStateProperty.resolveWith((states) { - if (states.contains(WidgetState.focused)) { - return BorderSide( - width: ZetaBorders.medium, - color: colors.borderPrimary, - ); - } - if (states.contains(WidgetState.hovered)) { - return BorderSide(color: colors.borderHover, width: ZetaBorders.small); - } - if (states.contains(WidgetState.pressed)) { - return BorderSide(color: colors.borderSelected, width: ZetaBorders.small); - } - - return BorderSide(color: colors.borderDefault, width: ZetaBorders.small); - }), - padding: WidgetStateProperty.all(EdgeInsets.zero), - minimumSize: WidgetStateProperty.all(Size.zero), - elevation: WidgetStatePropertyAll(Zeta.of(context).spacing.none), - ), - child: Icon( - rounded ? ZetaIcons.more_horizontal_round : ZetaIcons.more_horizontal_sharp, - size: Zeta.of(context).spacing.large, - ).paddingHorizontal(Zeta.of(context).spacing.small).paddingVertical(Zeta.of(context).spacing.minimum), - ), - ); - } - - Widget expandedBreadcrumb() { - return Row( - children: widget.children - .divide( - Row( - children: [ - SizedBox(width: Zeta.of(context).spacing.small), - ZetaIcon(ZetaIcons.chevron_right, size: Zeta.of(context).spacing.xl), - SizedBox(width: Zeta.of(context).spacing.small), - ], - ), - ) - .toList(), - ); - } -} diff --git a/lib/src/components/buttons/button.dart b/lib/src/components/buttons/button.dart index fb81b239..a32b954f 100644 --- a/lib/src/components/buttons/button.dart +++ b/lib/src/components/buttons/button.dart @@ -201,9 +201,12 @@ class ZetaButton extends ZetaStatelessWidget { size: iconSize, ), if (label.isNotEmpty) - Text( - label, - style: _textStyle, + Flexible( + child: Text( + label, + style: _textStyle, + textAlign: TextAlign.center, + ).paddingVertical(Zeta.of(context).spacing.minimum), ), if (trailingIcon != null) Icon( diff --git a/lib/src/components/chips/chip.dart b/lib/src/components/chips/chip.dart index 71945d8c..4277eab6 100644 --- a/lib/src/components/chips/chip.dart +++ b/lib/src/components/chips/chip.dart @@ -6,6 +6,7 @@ import '../../../zeta_flutter.dart'; export './assist_chip.dart'; export './filter_chip.dart'; export './input_chip.dart'; +export './status_chip.dart'; /// This covers the broad functionality of [ZetaAssistChip], [ZetaFilterChip] and [ZetaInputChip]. /// @@ -87,11 +88,14 @@ class ZetaChip extends ZetaStatefulWidget { class _ZetaChipState extends State { bool selected = false; + bool _draggable = false; @override void initState() { super.initState(); selected = widget.selected ?? false; + _draggable = widget.draggable; + _handleDisabledState(); } @override @@ -100,10 +104,25 @@ class _ZetaChipState extends State { if (oldWidget.selected != widget.selected) { selected = widget.selected ?? false; } + _handleDisabledState(); + } + + void _handleDisabledState() { + if (widget.onTap == null && widget.onToggle == null) { + _controller.update(WidgetState.disabled, true); + setState(() { + _draggable = false; + }); + } else { + _controller.update(WidgetState.disabled, false); + setState(() { + _draggable = widget.draggable; + }); + } } Widget _renderLeading(Color foregroundColor) { - if (widget.leading.runtimeType == Icon) { + if (widget.leading.runtimeType == ZetaIcon || widget.leading.runtimeType == Icon) { return IconTheme( data: IconThemeData(color: foregroundColor, size: Zeta.of(context).spacing.xl), child: widget.leading!, @@ -119,7 +138,6 @@ class _ZetaChipState extends State { @override Widget build(BuildContext context) { final colors = Zeta.of(context).colors; - final foregroundColor = selected ? colors.mainInverse : colors.mainDefault; return ZetaRoundedScope( rounded: context.rounded, @@ -128,18 +146,18 @@ class _ZetaChipState extends State { button: widget.onTap != null, label: widget.semanticLabel, child: SelectionContainer.disabled( - child: widget.draggable + child: _draggable ? Draggable( feedback: Material( color: Colors.transparent, - child: child(colors, foregroundColor, isDragging: true), + child: child(colors, isDragging: true), ), childWhenDragging: const Nothing(), data: widget.data, onDragCompleted: widget.onDragCompleted, - child: child(colors, foregroundColor), + child: child(colors), ) - : child(colors, foregroundColor), + : child(colors), ), ), ); @@ -170,25 +188,41 @@ class _ZetaChipState extends State { return Zeta.of(context).spacing.large; } + Color _foregroundColor(ZetaSemanticColors colors, bool disabled) { + if (!disabled) { + if (selected) { + return colors.mainInverse; + } else { + return colors.mainDefault; + } + } else { + return colors.mainDisabled; + } + } + ValueListenableBuilder> child( - ZetaSemanticColors colors, - Color foregroundColor, { + ZetaSemanticColors colors, { bool isDragging = false, }) { return ValueListenableBuilder( valueListenable: _controller, builder: (context, states, child) { + final disabled = states.contains(WidgetState.disabled); + final Color foregroundColor = _foregroundColor(colors, disabled); final double iconSize = selected ? Zeta.of(context).spacing.xl_2 : Zeta.of(context).spacing.none; final bool rounded = context.rounded; return InkWell( - statesController: _controller, + statesController: !disabled ? _controller : null, + mouseCursor: !disabled ? SystemMouseCursors.click : SystemMouseCursors.basic, borderRadius: rounded ? Zeta.of(context).radius.full : Zeta.of(context).radius.none, onTap: () { - if (widget.selected != null) { - setState(() => selected = !selected); - widget.onToggle?.call(selected); - } else { - widget.onTap?.call(); + if (!disabled) { + if (widget.selected != null) { + setState(() => selected = !selected); + widget.onToggle?.call(selected); + } else { + widget.onTap?.call(); + } } }, child: AnimatedContainer( @@ -202,22 +236,23 @@ class _ZetaChipState extends State { ), decoration: BoxDecoration( color: () { - if (states.contains(WidgetState.disabled)) { + if (disabled) { return colors.surfaceDisabled; - } - if (selected) { + } else { + if (selected) { + if (states.contains(WidgetState.hovered)) { + return colors.borderHover; + } + return colors.surfaceDefaultInverse; + } + if (states.contains(WidgetState.pressed) || isDragging) { + return colors.surfaceSelected; + } if (states.contains(WidgetState.hovered)) { - return colors.borderHover; + return colors.surfaceHover; } - return colors.surfaceDefaultInverse; - } - if (states.contains(WidgetState.pressed) || isDragging) { - return colors.surfaceSelected; - } - if (states.contains(WidgetState.hovered)) { - return colors.surfaceHover; + return colors.surfacePrimary; } - return colors.surfaceDefault; }(), borderRadius: rounded ? Zeta.of(context).radius.full : Zeta.of(context).radius.none, border: Border.fromBorderSide( @@ -241,7 +276,7 @@ class _ZetaChipState extends State { child: (selected ? ZetaIcon( ZetaIcons.check_mark, - color: widget.selected! ? colors.mainInverse : Colors.transparent, + color: disabled ? colors.mainDisabled : colors.mainInverse, ) : const Nothing()), ) diff --git a/lib/src/components/chips/status_chip.dart b/lib/src/components/chips/status_chip.dart new file mode 100644 index 00000000..1e1b5f0a --- /dev/null +++ b/lib/src/components/chips/status_chip.dart @@ -0,0 +1,125 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import '../../../zeta_flutter.dart'; + +/// The [ZetaStatusChip] is a chip that displays a status/label. +/// It can be dragged around the screen and placed in new locations using [DragTarget]. +/// +/// {@category Components} +/// +/// Figma: https://www.figma.com/file/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=21265-2159 +/// +/// Widgetbook: https://zeta-ds.web.app/flutter/widgetbook/index.html#/?path=components/chips/input-chip +class ZetaStatusChip extends ZetaStatelessWidget { + /// Creates a [ZetaStatusChip]. + const ZetaStatusChip({ + super.key, + required this.label, + super.rounded = true, + this.draggable = false, + this.data, + this.onDragCompleted, + this.semanticLabel, + }); + + /// The label on the [ZetaStatusChip] + final String label; + + /// Whether the chip can be dragged. + final bool draggable; + + /// Draggable data. + final dynamic data; + + /// Called when the draggable is dropped and accepted by a [DragTarget]. + /// + /// See also: + /// * [DragTarget] + /// * [Draggable] + final VoidCallback? onDragCompleted; + + /// A semantic label for the chip. + final String? semanticLabel; + + @override + Widget build(BuildContext context) { + return ZetaRoundedScope( + rounded: context.rounded, + child: MouseRegion( + cursor: draggable ? SystemMouseCursors.click : SystemMouseCursors.basic, + child: Semantics( + label: semanticLabel ?? label, + child: SelectionContainer.disabled( + child: draggable + ? Draggable( + feedback: Material( + color: Colors.transparent, + child: _Child(context: context, label: label), + ), + childWhenDragging: const Nothing(), + data: data, + onDragCompleted: onDragCompleted, + child: _Child(context: context, label: label), + ) + : _Child(context: context, label: label), + ), + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(StringProperty('label', label)) + ..add(DiagnosticsProperty('draggable', draggable)) + ..add(DiagnosticsProperty('data', data)) + ..add(ObjectFlagProperty.has('onDragCompleted', onDragCompleted)) + ..add(StringProperty('semanticLabel', semanticLabel)); + } +} + +/// The child widget of the [ZetaStatusChip]. +class _Child extends StatelessWidget { + const _Child({required this.context, required this.label}); + + final BuildContext context; + + final String label; + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + color: Zeta.of(context).colors.surfaceWarm, + borderRadius: context.rounded + ? BorderRadius.all( + Radius.circular( + Zeta.of(context).spacing.small, + ), + ) + : null, + ), + padding: EdgeInsets.symmetric( + horizontal: Zeta.of(context).spacing.small, + vertical: Zeta.of(context).spacing.minimum, + ), + child: Text( + label, + style: ZetaTextStyles.bodyXSmall.copyWith( + color: Zeta.of(context).colors.mainDefault, + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('context', context)) + ..add(StringProperty('label', label)); + } +} diff --git a/lib/src/components/components.dart b/lib/src/components/components.dart index 63bae3a4..acaa56b2 100644 --- a/lib/src/components/components.dart +++ b/lib/src/components/components.dart @@ -9,7 +9,7 @@ export 'badges/tag.dart'; export 'banner/banner.dart'; export 'bottom sheets/bottom_sheet.dart'; export 'bottom sheets/menu_items.dart'; -export 'breadcrumbs/breadcrumbs.dart'; +export 'breadcrumb/breadcrumb.dart'; export 'button_group/button_group.dart'; export 'buttons/button.dart'; export 'buttons/button_style.dart'; @@ -32,7 +32,7 @@ export 'in_page_banner/in_page_banner.dart'; export 'list_item/dropdown_list_item.dart'; export 'list_item/list_item.dart'; export 'list_item/notification_list_item.dart'; -export 'navigation bar/navigation_bar.dart'; +export 'navigation bar/navigation_bar.dart' hide NavigationItem; export 'navigation_rail/navigation_rail.dart'; export 'pagination/pagination.dart'; export 'password/password_input.dart'; @@ -40,6 +40,7 @@ export 'phone_input/phone_input.dart'; export 'progress/progress_bar.dart'; export 'progress/progress_circle.dart'; export 'radio/radio.dart'; +export 'range_selector/range_selector.dart'; export 'screen_header_bar/screen_header_bar.dart'; export 'search_bar/search_bar.dart'; export 'segmented_control/segmented_control.dart'; diff --git a/lib/src/components/dialog/dialog.dart b/lib/src/components/dialog/dialog.dart index 7e88b776..acd30386 100644 --- a/lib/src/components/dialog/dialog.dart +++ b/lib/src/components/dialog/dialog.dart @@ -105,7 +105,12 @@ class _ZetaDialog extends ZetaStatelessWidget { return ZetaRoundedScope( rounded: context.rounded, child: AlertDialog( - surfaceTintColor: zeta.colors.surfaceDefault, + surfaceTintColor: zeta.colors.surfacePrimary, + // TODO: Luke + // insetPadding: EdgeInsets.symmetric( + // horizontal: Zeta.of(context).spacing.xl, + // vertical: Zeta.of(context).spacing.xl_2, + // ), shape: RoundedRectangleBorder(borderRadius: Zeta.of(context).radius.large), title: icon != null || title != null ? Column( diff --git a/lib/src/components/fabs/fab.dart b/lib/src/components/fabs/fab.dart index ce6dff67..360bcec1 100644 --- a/lib/src/components/fabs/fab.dart +++ b/lib/src/components/fabs/fab.dart @@ -165,7 +165,13 @@ class _ZetaFABState extends State { child: Row( mainAxisSize: MainAxisSize.min, children: [ - ZetaIcon(widget.icon, size: widget.size.iconSize(context), color: foregroundColor), + ZetaIcon( + widget.icon, + size: widget.size.iconSize(context), + color: widget.onPressed != null + ? widget.type.iconColors(context) + : Zeta.of(context).colors.mainDisabled, + ), if (widget.expanded && widget.label != null) Row( mainAxisSize: MainAxisSize.min, @@ -240,6 +246,17 @@ extension on ZetaFabType { return colors.stateInverseSelected; } } + + Color iconColors(BuildContext context) { + final zetaColors = Zeta.of(context).colors; + switch (this) { + case ZetaFabType.primary: + case ZetaFabType.inverse: + return zetaColors.mainInverse; + case ZetaFabType.secondary: + return zetaColors.mainDefault; + } + } } extension on ZetaWidgetBorder { diff --git a/lib/src/components/global_header/global_header.dart b/lib/src/components/global_header/global_header.dart index 1578d224..c34d3049 100644 --- a/lib/src/components/global_header/global_header.dart +++ b/lib/src/components/global_header/global_header.dart @@ -5,6 +5,36 @@ import 'package:flutter/rendering.dart'; import '../../../zeta_flutter.dart'; /// Global header component +/// This component should not be used as an appbar in a scaffold. +/// It can be used in custom scroll views and columns. +/// +/// ``` +/// SingleChildScrollView( +/// child: Column(children: [ +/// ZetaGlobalHeader( +/// title: "Title", +/// tabItems: childrenOne, +/// searchBar: ZetaSearchBar(shape: ZetaWidgetBorder.full, size: ZetaWidgetSize.large), +/// onAppsButton: () {}, +/// actionButtons: [ +/// IconButton( +/// onPressed: () {}, +/// icon: const ZetaIcon( +/// ZetaIcons.alert, +/// ), +/// ), +/// IconButton( +/// onPressed: () {}, +/// icon: const ZetaIcon( +/// ZetaIcons.help, +/// ), +/// ), +/// ], +/// avatar: const ZetaAvatar(initials: 'PS'), +/// ), +/// ]), +/// ), +/// ``` /// {@category Components} /// /// Figma: https://www.figma.com/design/JesXQFLaPJLc1BdBM4sisI/%F0%9F%A6%93-ZDS---Components?node-id=1120-26358&node-type=canvas&m=dev diff --git a/lib/src/components/list_item/dropdown_list_item.dart b/lib/src/components/list_item/dropdown_list_item.dart index bcfbac5c..1ec49467 100644 --- a/lib/src/components/list_item/dropdown_list_item.dart +++ b/lib/src/components/list_item/dropdown_list_item.dart @@ -15,24 +15,40 @@ class ZetaDropdownListItem extends ZetaStatefulWidget { const ZetaDropdownListItem({ super.key, super.rounded, - required this.primaryText, required this.items, + this.title, + this.primaryText, this.secondaryText, + this.primaryTextStyle, + this.secondaryTextStyle, this.expanded = false, this.leading, this.showDivider, this.semanticLabel, - }); + }) : assert( + (title != null && primaryText == null && secondaryText == null) || + (title == null && (primaryText != null || secondaryText != null)), + 'Provide one of either title or primaryText/secondaryText', + ); /// The list of [ZetaListItem]s contained within the dropdown. final List items; + /// {@macro list-item-title} + final Widget? title; + /// {@macro list-item-primary-text} - final String primaryText; + final String? primaryText; + + /// {@macro list-item-primary-text-style} + final TextStyle? primaryTextStyle; /// {@macro list-item-secondary-text} final String? secondaryText; + /// {@macro list-item-secondary-text-style} + final TextStyle? secondaryTextStyle; + /// {@macro list-item-leading} final Widget? leading; @@ -61,7 +77,9 @@ class ZetaDropdownListItem extends ZetaStatefulWidget { ..add(DiagnosticsProperty('expanded', expanded)) ..add(DiagnosticsProperty('rounded', rounded)) ..add(DiagnosticsProperty('showDivider', showDivider)) - ..add(StringProperty('semanticLabel', semanticLabel)); + ..add(StringProperty('semanticLabel', semanticLabel)) + ..add(DiagnosticsProperty('primaryTextStyle', primaryTextStyle)) + ..add(DiagnosticsProperty('secondaryTextStyle', secondaryTextStyle)); } } @@ -125,7 +143,7 @@ class _ZetaDropdownListItemState extends State with Single child: Semantics( button: true, selected: _expanded, - label: widget.semanticLabel ?? (widget.primaryText + (widget.secondaryText ?? '')), + label: widget.semanticLabel ?? ((widget.primaryText ?? '') + (widget.secondaryText ?? '')), // DecoratedBox does not correctly animated the border when the widget expands. // ignore: use_decorated_box child: Container( @@ -140,8 +158,11 @@ class _ZetaDropdownListItemState extends State with Single children: [ ExcludeSemantics( child: ZetaListItem( + title: widget.title, primaryText: widget.primaryText, + primaryTextStyle: widget.primaryTextStyle, secondaryText: widget.secondaryText, + secondaryTextStyle: widget.secondaryTextStyle, leading: widget.leading, onTap: _onTap, showDivider: false, diff --git a/lib/src/components/list_item/list_item.dart b/lib/src/components/list_item/list_item.dart index 01d69254..d5b14d02 100644 --- a/lib/src/components/list_item/list_item.dart +++ b/lib/src/components/list_item/list_item.dart @@ -61,22 +61,32 @@ class ZetaList extends ZetaStatelessWidget { class ZetaListItem extends ZetaStatelessWidget { /// Creates a [ZetaListItem]. const ZetaListItem({ - required this.primaryText, + this.title, + this.primaryText, this.secondaryText, + this.primaryTextStyle, + this.secondaryTextStyle, this.leading, this.onTap, this.showDivider, this.trailing, super.key, super.rounded, - }); + }) : assert( + (title != null && primaryText == null && secondaryText == null) || + (title == null && primaryText != null || secondaryText != null), + 'Provide one of either title or primaryText/secondaryText', + ); /// Creates a [ZetaListItem] with a [ZetaSwitch] in the trailing widget space. ZetaListItem.toggle({ super.key, super.rounded, - required this.primaryText, + this.title, + this.primaryText, this.secondaryText, + this.primaryTextStyle, + this.secondaryTextStyle, this.showDivider, this.leading, bool value = false, @@ -86,14 +96,22 @@ class ZetaListItem extends ZetaStatelessWidget { onChanged: onChanged, variant: ZetaSwitchType.android, ), - onTap = (() => onChanged?.call(!value)); + onTap = (() => onChanged?.call(!value)), + assert( + (title != null && primaryText == null && secondaryText == null) || + (title == null && (primaryText != null || secondaryText != null)), + 'Provide one of either title or primaryText/secondaryText', + ); /// Creates a [ZetaListItem] with a [ZetaCheckbox] in the trailing widget space. ZetaListItem.checkbox({ super.key, super.rounded, - required this.primaryText, + this.title, + this.primaryText, this.secondaryText, + this.primaryTextStyle, + this.secondaryTextStyle, this.leading, this.showDivider, bool value = false, @@ -105,13 +123,21 @@ class ZetaListItem extends ZetaStatelessWidget { useIndeterminate: useIndeterminate, rounded: rounded, ), - onTap = (() => onChanged?.call(!value)); + onTap = (() => onChanged?.call(!value)), + assert( + (title != null && primaryText == null && secondaryText == null) || + (title == null && (primaryText != null || secondaryText != null)), + 'Provide one of either title or primaryText/secondaryText', + ); /// Creates a [ZetaListItem] with a [ZetaRadio] in the trailing widget space. ZetaListItem.radio({ - required this.primaryText, required dynamic value, + this.title, + this.primaryText, this.secondaryText, + this.primaryTextStyle, + this.secondaryTextStyle, this.leading, this.showDivider, dynamic groupValue, @@ -123,7 +149,12 @@ class ZetaListItem extends ZetaStatelessWidget { groupValue: groupValue, onChanged: onChanged, ), - onTap = (() => onChanged?.call(value)); + onTap = (() => onChanged?.call(value)), + assert( + (title != null && primaryText == null && secondaryText == null) || + (title == null && (primaryText != null || secondaryText != null)), + 'Provide one of either title or primaryText/secondaryText', + ); /// {@template list-item-leading} /// A widget to display before the title; @@ -133,16 +164,34 @@ class ZetaListItem extends ZetaStatelessWidget { /// Called when user taps on the [ZetaListItem]. final VoidCallback? onTap; + /// {@template list-item-title} + /// The primary content of the list item. + /// Cannot be provided with [primaryText] or [secondaryText]. + /// {@endtemplate} + final Widget? title; + /// {@template list-item-primary-text} /// The primary text of the [ZetaListItem]. + /// Cannot be provided with [title]. + /// {@endtemplate} + final String? primaryText; + + /// {@template list-item-primary-text-style} + /// The text style applied to [primaryText]. /// {@endtemplate} - final String primaryText; + final TextStyle? primaryTextStyle; /// {@template list-item-secondary-text} /// The secondary text of the [ZetaListItem]. + /// Cannot be provided with [title]. /// {@endtemplate} final String? secondaryText; + /// {@template list-item-secondary-text-style} + /// The text style applied to [secondaryText]. + /// {@endtemplate} + final TextStyle? secondaryTextStyle; + /// A widget to display after the primary text. /// If this is a checkbox, radio button, or switch, use the relevant named constructor. final Widget? trailing; @@ -162,7 +211,9 @@ class ZetaListItem extends ZetaStatelessWidget { ..add(DiagnosticsProperty('trailing', trailing)) ..add(StringProperty('label', primaryText)) ..add(StringProperty('secondaryText', secondaryText)) - ..add(DiagnosticsProperty('showDivider', showDivider)); + ..add(DiagnosticsProperty('showDivider', showDivider)) + ..add(DiagnosticsProperty('secondaryTextStyle', secondaryTextStyle)) + ..add(DiagnosticsProperty('primaryTextStyle', primaryTextStyle)); } @override @@ -209,23 +260,26 @@ class ZetaListItem extends ZetaStatelessWidget { child: leadingWidget, ), Flexible( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - primaryText, - maxLines: 1, - overflow: TextOverflow.ellipsis, + child: title ?? + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (primaryText != null && primaryText!.isNotEmpty) + Text( + primaryText!, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: primaryTextStyle, + ), + if (secondaryText != null && secondaryText!.isNotEmpty) + Text( + secondaryText!, + style: secondaryTextStyle ?? ZetaTextStyles.bodySmall, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], ), - if (secondaryText != null && secondaryText!.isNotEmpty) - Text( - secondaryText!, - style: ZetaTextStyles.bodySmall, - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ], - ), ), ], ), diff --git a/lib/src/components/navigation bar/navigation_bar.dart b/lib/src/components/navigation bar/navigation_bar.dart index fb699305..b2aa1b5d 100644 --- a/lib/src/components/navigation bar/navigation_bar.dart +++ b/lib/src/components/navigation bar/navigation_bar.dart @@ -42,6 +42,8 @@ class ZetaNavigationBar extends ZetaStatelessWidget { this.dividerIndex, this.action, this.semanticLabel, + this.shrinkItems = false, + this.useSafeArea = true, }) : assert( items.length >= 2 && items.length <= 6, 'The number of items should be between 2 and 6', @@ -56,6 +58,8 @@ class ZetaNavigationBar extends ZetaStatelessWidget { this.onTap, this.dividerIndex, this.semanticLabel, + this.shrinkItems = false, + this.useSafeArea = true, }) : splitItems = false, action = null; @@ -69,8 +73,10 @@ class ZetaNavigationBar extends ZetaStatelessWidget { this.onTap, this.dividerIndex, this.semanticLabel, + this.useSafeArea = true, }) : splitItems = true, - action = null; + action = null, + shrinkItems = true; /// Creates a [ZetaNavigationBar] with an action. const ZetaNavigationBar.action({ @@ -81,6 +87,8 @@ class ZetaNavigationBar extends ZetaStatelessWidget { this.currentIndex, this.onTap, this.semanticLabel, + this.shrinkItems = false, + this.useSafeArea = true, }) : dividerIndex = null, splitItems = false; @@ -107,16 +115,28 @@ class ZetaNavigationBar extends ZetaStatelessWidget { /// {@macro zeta-widget-semantic-label} final String? semanticLabel; + /// When set to true the items will shrink to take up less space. + /// This is useful when there are many items in the navigation bar. + /// Defaults to false. + /// When set to false the items will take up equal space and will expand to fill the bar. + final bool shrinkItems; + + /// Whether the child should be wrapped in a [SafeArea]. + final bool useSafeArea; + Row _generateNavigationItemRow(List items, BuildContext context) { return Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: items.map((navItem) { final index = items.indexOf(navItem); - return _NavigationItem( - selected: index == currentIndex, - item: navItem, - onTap: () => onTap?.call(index), - context: context, + return Expanded( + flex: !shrinkItems ? 1 : 0, + child: NavigationItem( + selected: index == currentIndex, + item: navItem, + onTap: () => onTap?.call(index), + context: context, + ), ); }).toList(), ); @@ -143,21 +163,21 @@ class ZetaNavigationBar extends ZetaStatelessWidget { child = Row( mainAxisAlignment: splitItems ? MainAxisAlignment.spaceBetween : MainAxisAlignment.spaceAround, children: [ - _generateNavigationItemRow(leftItems, context), + Expanded(flex: !shrinkItems ? 1 : 0, child: _generateNavigationItemRow(leftItems, context)), if (dividerIndex != null) Container( color: colors.borderSubtle, width: _navigationItemBorderWidth, height: Zeta.of(context).spacing.xl_7, ), - _generateNavigationItemRow(rightItems, context), + Expanded(flex: !shrinkItems ? 1 : 0, child: _generateNavigationItemRow(rightItems, context)), ], ); } else if (action != null) { child = Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - _generateNavigationItemRow(items, context), + Expanded(flex: !shrinkItems ? 1 : 0, child: _generateNavigationItemRow(items, context)), action!, ], ); @@ -166,14 +186,12 @@ class ZetaNavigationBar extends ZetaStatelessWidget { } return Container( - padding: EdgeInsets.symmetric(horizontal: Zeta.of(context).spacing.medium), + padding: EdgeInsets.symmetric(horizontal: Zeta.of(context).spacing.large), decoration: BoxDecoration( color: colors.surfaceDefault, border: Border(top: BorderSide(color: colors.borderSubtle)), ), - child: Semantics( - child: child, - ), + child: Semantics(child: useSafeArea ? SafeArea(child: child) : child), ); } @@ -186,23 +204,38 @@ class ZetaNavigationBar extends ZetaStatelessWidget { ..add(ObjectFlagProperty.has('onTap', onTap)) ..add(DiagnosticsProperty('splitItems', splitItems)) ..add(IntProperty('dividerIndex', dividerIndex)) - ..add(StringProperty('semanticLabel', semanticLabel)); + ..add(StringProperty('semanticLabel', semanticLabel)) + ..add(DiagnosticsProperty('shrinkItems', shrinkItems)) + ..add(DiagnosticsProperty('useSafeArea', useSafeArea)); } } -class _NavigationItem extends ZetaStatelessWidget { - const _NavigationItem({ +/// A single item in a [ZetaNavigationBar]. +@visibleForTesting +@protected +class NavigationItem extends ZetaStatelessWidget { + /// Creates a new [NavigationItem]. + const NavigationItem({ + super.key, required this.selected, required this.item, required this.onTap, required this.context, }); + /// Whether the item is selected. final bool selected; + + /// The item to display. final ZetaNavigationBarItem item; + + /// Called when the item is tapped. final VoidCallback onTap; + + /// The build context of the [ZetaNavigationBar]. final BuildContext context; + /// The badge to show on the navigation item. Widget get badge { final colors = Zeta.of(context).colors; return Positioned( @@ -210,7 +243,7 @@ class _NavigationItem extends ZetaStatelessWidget { right: Zeta.of(context).spacing.minimum, child: DecoratedBox( decoration: BoxDecoration( - color: colors.surfacePrimary, + color: colors.surfaceDefault, borderRadius: Zeta.of(context).radius.full, ), child: item.badge?.copyWith( @@ -220,6 +253,7 @@ class _NavigationItem extends ZetaStatelessWidget { ? ZetaWidgetSize.medium : null, type: ZetaIndicatorType.notification, + semanticLabel: item.badge?.semanticLabel, ), ), ); @@ -232,12 +266,13 @@ class _NavigationItem extends ZetaStatelessWidget { return Material( color: colors.surfaceDefault, - child: InkWell( + child: InkResponse( borderRadius: context.rounded ? Zeta.of(context).radius.rounded : Zeta.of(context).radius.none, onTap: onTap, + hoverColor: colors.surfaceHover, + highlightShape: BoxShape.rectangle, child: Semantics( button: true, - explicitChildNodes: true, label: item.label, child: Container( padding: EdgeInsets.only( diff --git a/lib/src/components/navigation_rail/navigation_rail.dart b/lib/src/components/navigation_rail/navigation_rail.dart index 5f238949..8208dce2 100644 --- a/lib/src/components/navigation_rail/navigation_rail.dart +++ b/lib/src/components/navigation_rail/navigation_rail.dart @@ -1,5 +1,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import '../../../zeta_flutter.dart'; @@ -124,7 +125,7 @@ class ZetaNavigationRail extends ZetaStatelessWidget { } } -class _ZetaNavigationRailItemContent extends ZetaStatelessWidget { +class _ZetaNavigationRailItemContent extends ZetaStatefulWidget { const _ZetaNavigationRailItemContent({ required this.label, this.icon, @@ -143,62 +144,107 @@ class _ZetaNavigationRailItemContent extends ZetaStatelessWidget { final EdgeInsets? padding; final bool? wordWrap; - // TODO(UX-1173): No hover state for navigation rail items + @override + State<_ZetaNavigationRailItemContent> createState() => _ZetaNavigationRailItemContentState(); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(StringProperty('label', label)) + ..add(DiagnosticsProperty('selected', selected)) + ..add(DiagnosticsProperty('disabled', disabled)) + ..add(ObjectFlagProperty.has('onTap', onTap)) + ..add(DiagnosticsProperty('padding', padding)) + ..add(DiagnosticsProperty('wordWrap', wordWrap)); + } +} + +class _ZetaNavigationRailItemContentState extends State<_ZetaNavigationRailItemContent> { + bool _hovered = false; + bool _focused = false; + @override Widget build(BuildContext context) { final zeta = Zeta.of(context); - final Color foregroundColor = disabled - ? zeta.colors.mainDisabled - : selected - ? zeta.colors.mainDefault - : zeta.colors.mainSubtle; + // final Color foregroundColor = disabled + // ? zeta.colors.mainDisabled + // : selected + // ? zeta.colors.mainDefault + // : zeta.colors.mainSubtle; + return Semantics( button: true, - enabled: !disabled, - child: MouseRegion( - cursor: disabled ? SystemMouseCursors.forbidden : SystemMouseCursors.click, - child: GestureDetector( - behavior: HitTestBehavior.translucent, - onTap: disabled ? null : onTap, - child: DecoratedBox( - decoration: BoxDecoration( - color: disabled - ? null - : selected - ? zeta.colors.stateDefaultSelected - : null, - borderRadius: context.rounded ? Zeta.of(context).radius.rounded : null, - ), - child: ConstrainedBox( - constraints: BoxConstraints( - minWidth: Zeta.of(context).spacing.xl_9, - minHeight: Zeta.of(context).spacing.xl_9, + enabled: !widget.disabled, + child: Focus( + onFocusChange: (focused) => setState(() => _focused = focused), + onKeyEvent: (node, event) { + if (event.logicalKey == LogicalKeyboardKey.enter || event.logicalKey == LogicalKeyboardKey.space) { + widget.onTap?.call(); + return KeyEventResult.handled; + } + return KeyEventResult.ignored; + }, + child: MouseRegion( + cursor: widget.disabled ? SystemMouseCursors.forbidden : SystemMouseCursors.click, + onEnter: (_) => setState(() => _hovered = true), + onExit: (_) => setState(() => _hovered = false), + child: GestureDetector( + behavior: HitTestBehavior.translucent, + onTap: widget.disabled ? null : widget.onTap, + child: DecoratedBox( + decoration: BoxDecoration( + color: widget.disabled + ? null + : widget.selected + ? zeta.colors.primitives.blue.shade10 + : _hovered + ? zeta.colors.surfaceHover + : null, + border: _focused ? Border.all(color: zeta.colors.primitives.blue, width: 2) : null, + borderRadius: context.rounded ? Zeta.of(context).radius.rounded : null, ), - child: SelectionContainer.disabled( - child: Padding( - padding: padding ?? - EdgeInsets.symmetric( - horizontal: Zeta.of(context).spacing.small, - vertical: Zeta.of(context).spacing.medium, - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if (icon != null) - IconTheme( - data: IconThemeData( - color: foregroundColor, - size: Zeta.of(context).spacing.xl_2, + child: ConstrainedBox( + constraints: BoxConstraints( + minWidth: Zeta.of(context).spacing.xl_9, + minHeight: Zeta.of(context).spacing.xl_9, + ), + child: SelectionContainer.disabled( + child: Padding( + padding: widget.padding ?? + EdgeInsets.symmetric( + horizontal: Zeta.of(context).spacing.small, + vertical: Zeta.of(context).spacing.medium, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (widget.icon != null) + IconTheme( + data: IconThemeData( + color: widget.disabled + ? zeta.colors.primitives.cool.shade50 + : widget.selected || _hovered + ? zeta.colors.mainDefault + : zeta.colors.primitives.cool.shade70, + size: Zeta.of(context).spacing.xl_2, + ), + child: widget.icon!, + ), + Text( + (widget.wordWrap ?? true) ? widget.label.replaceAll(' ', '\n') : widget.label, + textAlign: TextAlign.center, + style: ZetaTextStyles.titleSmall.copyWith( + color: widget.disabled + ? zeta.colors.primitives.cool.shade50 + : widget.selected || _hovered + ? zeta.colors.mainDefault + : zeta.colors.primitives.cool.shade70, ), - child: icon!, ), - Text( - (wordWrap ?? true) ? label.replaceAll(' ', '\n') : label, - textAlign: TextAlign.center, - style: ZetaTextStyles.titleSmall.copyWith(color: foregroundColor), - ), - ], + ], + ), ), ), ), @@ -213,12 +259,12 @@ class _ZetaNavigationRailItemContent extends ZetaStatelessWidget { void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); properties - ..add(ObjectFlagProperty.has('onTap', onTap)) - ..add(DiagnosticsProperty('disabled', disabled)) - ..add(DiagnosticsProperty('selected', selected)) - ..add(DiagnosticsProperty('padding', padding)) - ..add(StringProperty('label', label)) - ..add(DiagnosticsProperty('wordWrap', wordWrap)); + ..add(ObjectFlagProperty.has('onTap', widget.onTap)) + ..add(DiagnosticsProperty('disabled', widget.disabled)) + ..add(DiagnosticsProperty('selected', widget.selected)) + ..add(DiagnosticsProperty('padding', widget.padding)) + ..add(StringProperty('label', widget.label)) + ..add(DiagnosticsProperty('wordWrap', widget.wordWrap)); } } diff --git a/lib/src/components/progress/progress.dart b/lib/src/components/progress/progress.dart index 0ffa2f14..42bb92a0 100644 --- a/lib/src/components/progress/progress.dart +++ b/lib/src/components/progress/progress.dart @@ -10,14 +10,21 @@ abstract class ZetaProgress extends ZetaStatefulWidget { super.key, super.rounded, this.progress = 0, + this.maxValue = 1, }); /// ZetaProgress value, decimal value ranging from 0.0 - 1.0, 0.5 = 50% final double progress; + + /// Maximum value for progress, defaults to 1 + final double maxValue; + @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); - properties.add(DoubleProperty('progress', progress)); + properties + ..add(DoubleProperty('progress', progress)) + ..add(DoubleProperty('maxValue', maxValue)); } } @@ -48,7 +55,7 @@ abstract class ZetaProgressState extends State with T ).animate(controller) ..addListener(() { setState(() { - progress = animation.value; + progress = animation.value / widget.maxValue; }); }); } @@ -65,10 +72,12 @@ abstract class ZetaProgressState extends State with T setState(() { animation = Tween( - begin: progress, + begin: progress * widget.maxValue, end: newProgress, ).animate(controller); - controller.forward(from: progress); + controller + ..reset() + ..forward(from: 0); }); } diff --git a/lib/src/components/progress/progress_circle.dart b/lib/src/components/progress/progress_circle.dart index 1dc684cd..94599e25 100644 --- a/lib/src/components/progress/progress_circle.dart +++ b/lib/src/components/progress/progress_circle.dart @@ -34,9 +34,11 @@ class ZetaProgressCircle extends ZetaProgress { const ZetaProgressCircle({ super.key, super.progress = 0, + super.maxValue = 1, this.size = ZetaCircleSizes.xl, super.rounded, this.onCancel, + this.label, }); ///Size of [ZetaProgressCircle] @@ -45,6 +47,9 @@ class ZetaProgressCircle extends ZetaProgress { /// Cancel function => cancel upload. final VoidCallback? onCancel; + /// Label for [ZetaProgressCircle], override default percentage label. + final String? label; + @override State createState() => _ZetaProgressCircleState(); @@ -55,7 +60,9 @@ class ZetaProgressCircle extends ZetaProgress { ..add(EnumProperty('size', size)) ..add(DoubleProperty('progress', progress)) ..add(DiagnosticsProperty('rounded', rounded)) - ..add(ObjectFlagProperty.has('onCancel', onCancel)); + ..add(ObjectFlagProperty.has('onCancel', onCancel)) + ..add(DoubleProperty('maxValue', maxValue)) + ..add(StringProperty('label', label)); } } @@ -85,13 +92,11 @@ class _ZetaProgressCircleState extends ZetaProgressState { @override Widget build(BuildContext context) { - final textVal = '${(widget.progress * 100).round()}%'; + final textVal = widget.label ?? '${(widget.progress * 100).round()}%'; final colors = Zeta.of(context).colors; final textWidget = Text( textVal, - style: widget.size != ZetaCircleSizes.s - ? ZetaTextStyles.labelSmall - : ZetaTextStyles.labelSmall.copyWith(fontSize: Zeta.of(context).spacing.small), + style: _getTextSize(), ); final size = _getSize(context); @@ -106,6 +111,7 @@ class _ZetaProgressCircleState extends ZetaProgressState { progress: animation.value, rounded: context.rounded, context: context, + maxValue: widget.maxValue, ), child: Center( child: widget.size == ZetaCircleSizes.xs @@ -169,6 +175,19 @@ class _ZetaProgressCircleState extends ZetaProgressState { } } + TextStyle _getTextSize() { + switch (widget.size) { + case ZetaCircleSizes.xs: + case ZetaCircleSizes.s: + return ZetaTextStyles.labelSmall; + case ZetaCircleSizes.m: + return ZetaTextStyles.labelMedium; + case ZetaCircleSizes.l: + case ZetaCircleSizes.xl: + return ZetaTextStyles.labelLarge; + } + } + @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); @@ -186,7 +205,12 @@ typedef CirclePainter = _CirclePainter; /// Class definition for [_CirclePainter] class _CirclePainter extends CustomPainter { ///Constructor for [_CirclePainter] - _CirclePainter({this.progress = 0, this.rounded = true, required this.context}); + _CirclePainter({ + this.progress = 0, + this.rounded = true, + required this.context, + this.maxValue = 1, + }); ///Percentage of progress in decimal value, defaults to 0 final double progress; @@ -196,6 +220,9 @@ class _CirclePainter extends CustomPainter { final BuildContext context; + /// Maximum value for progress, defaults to 1 + final double maxValue; + final _paint = Paint(); @override @@ -211,7 +238,7 @@ class _CirclePainter extends CustomPainter { canvas.drawArc( Rect.fromLTRB(0, 0, size.width, size.height), 3 * math.pi / 2, - progress * fullCircle, + progress / maxValue * fullCircle, false, _paint, ); diff --git a/lib/src/components/range_selector/range_selector.dart b/lib/src/components/range_selector/range_selector.dart new file mode 100644 index 00000000..01963f47 --- /dev/null +++ b/lib/src/components/range_selector/range_selector.dart @@ -0,0 +1,448 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import '../../../zeta_flutter.dart'; + +/// The [ZetaRangeSelector] is a customizable range selector widget that +/// allows users to select a range of values within a specified minimum +/// and maximum range. It provides a visual representation of the selected +/// range and allows for precise adjustments through both dragging and direct input +class ZetaRangeSelector extends ZetaStatefulWidget { + /// Creates a new [ZetaRangeSelector] + ZetaRangeSelector({ + super.key, + super.rounded, + required this.initialValues, + this.min = 0.0, + this.max = 100, + this.label, + this.onChange, + this.divisions, + this.semanticLabel, + this.showValues = true, + }) : assert( + min <= initialValues.start && initialValues.start <= initialValues.end && initialValues.end <= max, + 'The start value must be less than or equal to the end value, and both must be within the range of min and max.', + ); + + /// The initial values of the range selector. + final RangeValues initialValues; + + /// The minimum value of the range selector. + /// Defaults to 0. + final double min; + + /// The maximum value of the range selector. + /// Defaults to 100. + final double max; + + /// The label of the range selector. + final String? label; + + /// Called with the values of the range selector whenever it is changed. + final ValueChanged? onChange; + + /// The number of divisions for the range selector. + final int? divisions; + + /// Value passed to the wrapping [Semantics] widget. + final String? semanticLabel; + + /// Whether to show the values of the range selector. + final bool showValues; + + @override + State createState() => _ZetaRangeSelectorState(); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DoubleProperty('min', min)) + ..add(DoubleProperty('max', max)) + ..add(StringProperty('label', label)) + ..add(ObjectFlagProperty?>.has('onChange', onChange)) + ..add(IntProperty('divisions', divisions)) + ..add(StringProperty('semanticLabel', semanticLabel)) + ..add(DiagnosticsProperty('showValues', showValues)) + ..add(DiagnosticsProperty('initialValues', initialValues)); + } +} + +class _ZetaRangeSelectorState extends State { + bool _selected = false; + + late RangeValues _values; + + final TextEditingController _lowerController = TextEditingController(); + final TextEditingController _upperController = TextEditingController(); + + bool get disabled => widget.onChange == null; + + @override + void initState() { + super.initState(); + _values = widget.initialValues; + _lowerController.text = widget.initialValues.start.round().toString(); + _upperController.text = widget.initialValues.end.round().toString(); + } + + @override + void didUpdateWidget(ZetaRangeSelector oldWidget) { + super.didUpdateWidget(oldWidget); + if (widget.initialValues != oldWidget.initialValues) { + _values = widget.initialValues; + _lowerController.text = widget.initialValues.start.toString(); + _upperController.text = widget.initialValues.end.toString(); + } + } + + @override + void dispose() { + super.dispose(); + _lowerController.dispose(); + _upperController.dispose(); + } + + Color get _activeColor { + final colors = Zeta.of(context).colors; + if (widget.onChange == null) { + return colors.mainDisabled; + } + return _selected ? colors.mainPrimary : colors.surfaceDefaultInverse; + } + + void _onSubmit(TextEditingController controller, {bool lower = true}) { + if (controller.text.isNotEmpty) { + double? val = double.tryParse(controller.text); + if (val != null) { + if (val < widget.min) { + val = widget.min; + } + if (lower ? val >= _values.end : val <= _values.start) { + val = lower ? _values.end : _values.start; + } + if (widget.onChange != null) { + widget.onChange?.call(RangeValues(lower ? val : _values.start, lower ? _values.end : val)); + setState(() { + _values = RangeValues(lower ? val! : _values.start, lower ? _values.end : val!); + controller.text = val!.round().toString(); + }); + } + } + } + } + + void _valueFieldOnChanged(String value, TextEditingController controller) { + double? val = double.tryParse(value); + if (val != null) { + if (val > widget.max) { + val = widget.max; + } + setState(() { + controller.text = val!.round().toString(); + }); + } + } + + void _rangeSliderOnChanged(RangeValues value) { + if (widget.onChange != null) { + widget.onChange?.call(RangeValues(value.start, value.end)); + setState(() { + _values = RangeValues(value.start, value.end); + _lowerController.text = value.start.round().toString(); + _upperController.text = value.end.round().toString(); + }); + } + } + + void _setSelected(bool selected) { + setState(() { + _selected = selected; + }); + } + + @override + Widget build(BuildContext context) { + final colors = Zeta.of(context).colors; + final spacing = Zeta.of(context).spacing; + final bool rounded = context.rounded; + + return ZetaRoundedScope( + rounded: rounded, + child: Semantics( + label: widget.semanticLabel, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (widget.label != null) + Text( + widget.label!, + style: ZetaTextStyles.bodySmall.copyWith( + color: disabled ? colors.mainDisabled : colors.mainDefault, + ), + ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (widget.showValues) + _ValueField( + controller: _lowerController, + onEditingComplete: () => _onSubmit(_lowerController), + onTapOutside: (event) => _onSubmit(_lowerController), + onChanged: (value) => _valueFieldOnChanged(value, _lowerController), + disabled: disabled, + rounded: rounded, + context: context, + ), + Expanded( + child: SliderTheme( + data: SliderThemeData( + /// Track + activeTrackColor: _activeColor, + inactiveTrackColor: colors.surfaceDisabled, + rangeTrackShape: rounded + ? const RoundedRectRangeSliderTrackShape() as RangeSliderTrackShape + : const RectangularRangeSliderTrackShape() as RangeSliderTrackShape, + + /// Ticks + activeTickMarkColor: colors.surfaceDefault, + inactiveTickMarkColor: colors.surfaceDefault, + rangeTickMarkShape: const RoundRangeSliderTickMarkShape(tickMarkRadius: 1), + + /// Thumbs + overlayShape: _DrawThumbOverlay( + size: spacing.xl / 2, + rounded: rounded, + color: _activeColor, + ), + rangeThumbShape: _DrawThumb( + size: spacing.large / 2, + rounded: rounded, + color: _activeColor, + ), + ), + child: RangeSlider( + values: _values, + onChanged: _rangeSliderOnChanged, + divisions: widget.divisions, + onChangeStart: (_) => _setSelected(true), + onChangeEnd: (_) => _setSelected(false), + min: widget.min, + max: widget.max, + mouseCursor: WidgetStatePropertyAll( + disabled ? SystemMouseCursors.basic : SystemMouseCursors.click, + ), + semanticFormatterCallback: (value) { + return '${value.round()}'; + }, + ), + ), + ), + if (widget.showValues) + _ValueField( + controller: _upperController, + onEditingComplete: () => _onSubmit(_upperController, lower: false), + onTapOutside: (event) => _onSubmit(_upperController, lower: false), + onChanged: (value) => _valueFieldOnChanged(value, _upperController), + disabled: disabled, + rounded: rounded, + context: context, + ), + ].gap(spacing.xl_4), + ), + ].gap(spacing.small), + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('disabled', disabled)); + } +} + +class _ValueField extends StatelessWidget { + const _ValueField({ + required this.controller, + required this.onEditingComplete, + required this.onChanged, + required this.onTapOutside, + required this.disabled, + required this.rounded, + required this.context, + }); + + final TextEditingController controller; + final VoidCallback onEditingComplete; + final ValueChanged onChanged; + final TapRegionCallback onTapOutside; + final bool disabled; + final bool rounded; + final BuildContext context; + + ZetaSemanticColors get _colors { + return Zeta.of(context).colors; + } + + ZetaSemanticSpaces get _spacing { + return Zeta.of(context).spacing; + } + + InputBorder get _border { + final radius = Zeta.of(context).radius; + + return OutlineInputBorder( + borderSide: BorderSide( + color: !disabled ? _colors.borderDefault : _colors.borderDisabled, + ), + borderRadius: rounded ? radius.minimal : radius.none, + ); + } + + InputDecoration get _inputDecoration { + return InputDecoration( + filled: true, + fillColor: disabled ? _colors.surfaceDisabled : null, + contentPadding: EdgeInsets.zero, + constraints: BoxConstraints(maxHeight: _spacing.xl_6), + border: _border, + focusedBorder: _border, + enabledBorder: _border, + disabledBorder: _border, + ); + } + + @override + Widget build(BuildContext context) { + return SizedBox( + width: _spacing.xl_9 - 8, + height: _spacing.xl_8, + child: TextFormField( + keyboardType: TextInputType.number, + enabled: !disabled, + controller: controller, + onEditingComplete: onEditingComplete, + onChanged: onChanged, + onTapOutside: onTapOutside.call, + textAlign: TextAlign.center, + inputFormatters: [FilteringTextInputFormatter.digitsOnly], + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + color: disabled ? _colors.mainDisabled : _colors.mainSubtle, + ), + decoration: _inputDecoration, + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('controller', controller)) + ..add(ObjectFlagProperty.has('onEditingComplete', onEditingComplete)) + ..add(ObjectFlagProperty>.has('onChanged', onChanged)) + ..add(DiagnosticsProperty('disabled', disabled)) + ..add(DiagnosticsProperty('rounded', rounded)) + ..add(DiagnosticsProperty('context', context)) + ..add(ObjectFlagProperty.has('onTapOutside', onTapOutside)); + } +} + +class _DrawThumb extends RangeSliderThumbShape { + /// Constructor for [_DrawThumb] + const _DrawThumb({required this.size, required this.rounded, required this.color}); + + /// Radius or width/height for [_DrawThumb] depending on shape + final double size; + + /// If [_DrawThumb] is circular or a square + final bool rounded; + + /// Color of [_DrawThumb] + final Color color; + + @override + Size getPreferredSize(bool isEnabled, bool isDiscrete) { + return Size.fromRadius(size); + } + + /// Paints thumb + @override + void paint( + PaintingContext context, + Offset center, { + required Animation activationAnimation, + required Animation enableAnimation, + bool? isDiscrete, + bool? isEnabled, + bool? isOnTop, + bool? isPressed, + required SliderThemeData sliderTheme, + TextDirection? textDirection, + Thumb? thumb, + }) { + final Canvas canvas = context.canvas; + + final paint = Paint() + ..style = PaintingStyle.fill + ..color = color; + + // draw icon with text painter + rounded + ? canvas.drawCircle(center, size, paint) + : canvas.drawRect(Rect.fromCenter(center: center, width: size * 2, height: size * 2), paint); + } +} + +/// Custom slider thumb component +class _DrawThumbOverlay extends SliderComponentShape { + /// Constructor for [_DrawThumbOverlay] + const _DrawThumbOverlay({required this.size, required this.rounded, required this.color}); + + /// Radius or width/height for [_DrawThumbOverlay] depending on shape + final double size; + + /// If [_DrawThumbOverlay] is circular or a square + final bool rounded; + + /// Color of [_DrawThumbOverlay] + final Color color; + + @override + Size getPreferredSize(bool isEnabled, bool isDiscrete) { + return Size.fromRadius(size); + } + + /// Paints thumb + @override + void paint( + PaintingContext context, + Offset center, { + required Animation activationAnimation, + required Animation enableAnimation, + required bool isDiscrete, + required TextPainter labelPainter, + required RenderBox parentBox, + required SliderThemeData sliderTheme, + required TextDirection textDirection, + required double value, + required double textScaleFactor, + required Size sizeWithOverflow, + }) { + final Canvas canvas = context.canvas; + + final paint = Paint() + ..style = PaintingStyle.fill + ..color = color; + + // draw icon with text painter + rounded + ? canvas.drawCircle(center, size, paint) + : canvas.drawRect(Rect.fromCenter(center: center, width: size * 2, height: size * 2), paint); + } +} diff --git a/lib/src/components/top_app_bar/top_app_bar.dart b/lib/src/components/top_app_bar/top_app_bar.dart index 2d7f39c3..af5dbaa3 100644 --- a/lib/src/components/top_app_bar/top_app_bar.dart +++ b/lib/src/components/top_app_bar/top_app_bar.dart @@ -329,23 +329,26 @@ class _ZetaTopAppBarState extends State { return ZetaRoundedScope( rounded: context.rounded, - child: Padding( - padding: EdgeInsets.symmetric(horizontal: spacing.minimum), - child: AppBar( - elevation: 0, - scrolledUnderElevation: 0, - backgroundColor: colors.surfaceDefault, - iconTheme: IconThemeData(color: colors.mainDefault), - leading: leading, - toolbarHeight: spacing.xl_9, - automaticallyImplyLeading: widget.automaticallyImplyLeading, - surfaceTintColor: Colors.transparent, - centerTitle: widget.type == ZetaTopAppBarType.centered, - titleTextStyle: widget.titleTextStyle == null - ? ZetaTextStyles.bodyLarge.copyWith(color: colors.mainDefault) - : widget.titleTextStyle!.copyWith(color: colors.mainDefault), - title: title, - actions: actions, + child: ColoredBox( + color: colors.surfaceDefault, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: spacing.minimum), + child: AppBar( + elevation: 0, + scrolledUnderElevation: 0, + backgroundColor: colors.surfaceDefault, + iconTheme: IconThemeData(color: colors.mainDefault), + leading: leading, + toolbarHeight: spacing.xl_9, + automaticallyImplyLeading: widget.automaticallyImplyLeading, + surfaceTintColor: Colors.transparent, + centerTitle: widget.type == ZetaTopAppBarType.centered, + titleTextStyle: widget.titleTextStyle == null + ? ZetaTextStyles.bodyLarge.copyWith(color: colors.mainDefault) + : widget.titleTextStyle!.copyWith(color: colors.mainDefault), + title: title, + actions: actions, + ), ), ), ); diff --git a/lib/src/theme/color_swatch.dart b/lib/src/theme/color_swatch.dart index df2b649f..d8e4460a 100644 --- a/lib/src/theme/color_swatch.dart +++ b/lib/src/theme/color_swatch.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'color_extensions.dart'; import 'contrast.dart'; -/// {@template zeta-colors-swatch} +/// {@template zeta-color-swatch} /// Contains shades from 10 (light) to 100 (dark). /// /// See also: diff --git a/pubspec.yaml b/pubspec.yaml index 54d14176..93f4b34b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: zeta_flutter -version: 0.16.0 +version: 0.20.1 description: Zeta is the new, formal, standardized Zebra Design System based off the successes of ZDS (Zebra Design System). This package is in pre-release, and so many aspects are incomplete. diff --git a/test/scripts/output/test_table.md b/test/scripts/output/test_table.md index 307b28b7..4c298e67 100644 --- a/test/scripts/output/test_table.md +++ b/test/scripts/output/test_table.md @@ -1,6 +1,7 @@ | Component | Accessibility | Content | Dimensions | Styling | Interaction | Golden | Performance | Unorganised | Total Tests | | -------------- | ------------- | ------- | ---------- | ------- | ----------- | ------ | ----------- | ----------- | ----------- | | Accordion | 0 | 2 | 0 | 1 | 2 | 0 | 0 | 0 | 5 | +| Avatar Rail | 1 | 2 | 2 | 1 | 2 | 1 | 1 | 0 | 10 | | Avatar | 1 | 3 | 6 | 5 | 0 | 6 | 0 | 0 | 21 | | Indicator | 0 | 7 | 0 | 0 | 0 | 5 | 0 | 0 | 12 | | Label | 0 | 8 | 0 | 0 | 0 | 7 | 0 | 0 | 15 | @@ -11,17 +12,19 @@ | Button | 0 | 10 | 0 | 2 | 1 | 8 | 0 | 0 | 21 | | Chat Item | 0 | 10 | 0 | 0 | 0 | 8 | 0 | 0 | 18 | | Checkbox | 0 | 3 | 0 | 0 | 3 | 3 | 0 | 0 | 9 | -| Chip | 0 | 1 | 0 | 0 | 5 | 0 | 0 | 0 | 6 | +| Chip | 0 | 2 | 0 | 0 | 5 | 0 | 0 | 0 | 7 | +| Status Chip | 1 | 3 | 1 | 3 | 1 | 3 | 0 | 0 | 12 | | Comms Button | 2 | 7 | 0 | 0 | 0 | 1 | 0 | 0 | 10 | | Dialpad | 0 | 2 | 0 | 1 | 2 | 3 | 0 | 0 | 8 | | Fab | 0 | 6 | 0 | 1 | 1 | 6 | 0 | 0 | 14 | | Icon | 1 | 4 | 1 | 6 | 0 | 0 | 0 | 0 | 12 | | In Page Banner | 0 | 4 | 0 | 4 | 2 | 4 | 0 | 0 | 14 | +| Navigation Bar | 5 | 7 | 3 | 4 | 2 | 6 | 0 | 0 | 27 | | Password Input | 0 | 4 | 0 | 0 | 0 | 2 | 0 | 0 | 6 | | Search Bar | 0 | 5 | 0 | 0 | 5 | 5 | 0 | 0 | 15 | | Slider | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | -| Stepper | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 30 | 30 | +| Stepper | 4 | 8 | 4 | 6 | 2 | 6 | 0 | 0 | 30 | | Stepper Input | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 2 | | Tooltip | 0 | 3 | 1 | 3 | 0 | 4 | 0 | 0 | 11 | -| Top App Bar | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 25 | 25 | -| Total Tests | 7 | 95 | 11 | 26 | 23 | 71 | 0 | 55 | 288 | +| Top App Bar | 2 | 6 | 1 | 1 | 6 | 9 | 0 | 0 | 25 | +| Total Tests | 20 | 122 | 22 | 41 | 36 | 96 | 1 | 0 | 338 | diff --git a/test/src/components/avatar/avatar_test.dart b/test/src/components/avatar/avatar_test.dart index 10ab2880..25459f90 100644 --- a/test/src/components/avatar/avatar_test.dart +++ b/test/src/components/avatar/avatar_test.dart @@ -17,7 +17,7 @@ void main() { }); group('Accessibility Tests', () { - testWidgets('ZetaAvatar meets accessibility requirements', (WidgetTester tester) async { + testWidgets('ZetaAvatar meets accessibility requirements', (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); await tester.pumpWidget( const TestApp( @@ -48,13 +48,13 @@ void main() { final debugFillProperties = { 'size': 'ZetaAvatarSize.xl', 'name': 'null', - 'specialStatus': 'null', - 'badge': 'null', + 'upperBadge': 'null', + 'lowerBadge': 'null', 'backgroundColor': 'null', 'statusColor': 'null', - 'semanticUpperBadgeValue': '"upperBadge"', - 'semanticValue': '"avatar"', - 'semanticLowerBadgeValue': '"lowerBadge"', + 'semanticUpperBadgeValue': 'null', + 'semanticValue': 'null', + 'semanticLowerBadgeValue': 'null', 'initialTextStyle': 'null', }; debugFillPropertiesTest( diff --git a/test/src/components/badge/golden/indicator_notification_with_value.png b/test/src/components/badge/golden/indicator_notification_with_value.png new file mode 100644 index 00000000..edd743bf Binary files /dev/null and b/test/src/components/badge/golden/indicator_notification_with_value.png differ diff --git a/test/src/components/badge/indicator_test.dart b/test/src/components/badge/indicator_test.dart index 43c683a8..ba73efff 100644 --- a/test/src/components/badge/indicator_test.dart +++ b/test/src/components/badge/indicator_test.dart @@ -13,7 +13,46 @@ void main() { goldenFileComparator = TolerantComparator(goldenFile.uri); }); - group('Accessibility Tests', () {}); + group('Accessibility Tests', () { + for (int i = 0; i < 10; i++) { + testWidgets('medium notification value $i meets accessibility standards', (tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + TestApp( + home: ZetaIndicator( + size: ZetaWidgetSize.medium, + value: i, + ), + ), + ); + + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + + handle.dispose(); + }); + + testWidgets('default notification value $i meets accessibility standards', (tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + TestApp( + home: ZetaIndicator( + value: i, + ), + ), + ); + + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + + handle.dispose(); + }); + } + }); group('Content Tests', () { final debugFillProperties = { 'color': 'MaterialColor(primary value: Color(0xffff9800))', @@ -170,6 +209,11 @@ void main() { 'indicator_icon_values', ); goldenTest(goldenFile, const ZetaIndicator.notification(), 'indicator_notification_default'); + goldenTest( + goldenFile, + const ZetaIndicator.notification(value: 3, size: ZetaWidgetSize.medium), + 'indicator_notification_with_value', + ); goldenTest( goldenFile, const ZetaIndicator.notification( diff --git a/test/src/components/breadcrumb/breadcrumb_test.dart b/test/src/components/breadcrumb/breadcrumb_test.dart new file mode 100644 index 00000000..db66e075 --- /dev/null +++ b/test/src/components/breadcrumb/breadcrumb_test.dart @@ -0,0 +1,228 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:zeta_flutter/zeta_flutter.dart'; + +import '../../../test_utils/test_app.dart'; +import '../../../test_utils/tolerant_comparator.dart'; +import '../../../test_utils/utils.dart'; + +void main() { + const String parentFolder = 'breadcrumb'; + + const goldenFile = GoldenFiles(component: parentFolder); + setUpAll(() { + goldenFileComparator = TolerantComparator(goldenFile.uri); + }); + + final List children = [ + ZetaBreadcrumbItem( + label: 'Breadcrumb', + onPressed: () {}, + icon: ZetaIcons.star, + ), + ZetaBreadcrumbItem(label: 'Item 1', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 2', onPressed: () {}), + ZetaBreadcrumbItem( + label: 'Item 3', + onPressed: () {}, + icon: ZetaIcons.star, + ), + ZetaBreadcrumbItem(label: 'Item 4', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 5', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 6', onPressed: () {}), + ]; + + group('Accessibility Tests', () { + testWidgets('ZetaBreadcrumb meets accessibility standards', (tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + TestApp( + home: ZetaBreadcrumb( + children: children, + ), + ), + ); + + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + + handle.dispose(); + }); + }); + + group('Content Tests', () { + final debugFillProperties = { + 'children': children.toString().replaceAll('[', '').replaceAll(']', ''), + }; + debugFillPropertiesTest( + ZetaBreadcrumb(children: children), + debugFillProperties, + ); + + // has the correct number of children + testWidgets('ZetaBreadcrumb has the correct number of children', (tester) async { + const maxItemsShown = 2; + + await tester.pumpWidget( + TestApp( + home: ZetaBreadcrumb( + children: children, + ), + ), + ); + expect(find.byType(ZetaBreadcrumbItem), findsNWidgets(maxItemsShown)); + + // ignore: deprecated_member_use_from_same_package + await tester.tap(find.byType(TruncatedItem)); + await tester.pumpAndSettle(); + + expect(find.byType(ZetaBreadcrumbItem), findsNWidgets(children.length)); + }); + + // children have the correct labels + testWidgets('ZetaBreadcrumb children have the correct labels', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaBreadcrumb( + children: children, + ), + ), + ); + + expect(find.text('Breadcrumb'), findsOneWidget); + expect(find.text('Item ${children.length - 1}'), findsOneWidget); + + // ignore: deprecated_member_use_from_same_package + await tester.tap(find.byType(TruncatedItem)); + await tester.pumpAndSettle(); + + for (int i = 0; i < children.length; i++) { + expect(find.text(children[i].label), findsOneWidget); + } + }); + + // children have the correct icons (if any) + testWidgets(' ZetaBreadcrumb children have the correct icons', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaBreadcrumb( + children: children, + ), + ), + ); + + final iconFinder = find.byWidgetPredicate((widget) { + if (widget is ZetaIcon) { + return widget.icon == ZetaIcons.star; + } + return false; + }); + expect(iconFinder, findsOneWidget); + + // ignore: deprecated_member_use_from_same_package + await tester.tap(find.byType(TruncatedItem)); + await tester.pumpAndSettle(); + + final iconFinder1 = find.byWidgetPredicate((widget) { + if (widget is ZetaIcon) { + return widget.icon == ZetaIcons.star; + } + return false; + }); + expect(iconFinder1, findsNWidgets(2)); + }); + }); + + group('Dimensions Tests', () { + // each item is equally spaced + testWidgets('ZetaBreadcrumb items are equally spaced', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaBreadcrumb( + maxItemsShown: 7, + children: [ + ZetaBreadcrumbItem(label: 'Item 0', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 1', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 2', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 3', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 4', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 5', onPressed: () {}), + ZetaBreadcrumbItem(label: 'Item 6', onPressed: () {}), + ], + ), + ), + ); + + final itemFinder = find.byType(ZetaBreadcrumbItem); + + final List itemPositions = []; + for (int i = 0; i < children.length; i++) { + expect(itemFinder.at(i), findsOneWidget); + itemPositions.add(tester.getTopLeft(itemFinder.at(i)).dx); + } + + final double distance = itemPositions[1] - itemPositions[0]; + for (int i = 1; i < itemPositions.length; i++) { + expect(itemPositions[i] - itemPositions[i - 1], distance); + } + }); + }); + + group('Styling Tests', () { + testWidgets('ZetaBreadcrumb label and icon colors are correct', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaBreadcrumb( + maxItemsShown: 7, + children: children, + ), + ), + ); + final context = getBuildContext(tester, ZetaBreadcrumb); + final colors = Zeta.of(context).colors; + + final labelFinder = find.byType(Text); + final iconFinder = find.byType(ZetaIcon); + + for (int i = 0; i < children.length; i++) { + if (i == children.length - 1) { + expect( + (tester.firstWidget(labelFinder.at(i)) as Text).style?.color, + colors.primitives.pure.shade1000, + ); + } else { + expect( + (tester.firstWidget(labelFinder.at(i)) as Text).style?.color, + colors.mainSubtle, + ); + } + } + + for (int i = 0; i < iconFinder.evaluate().length; i++) { + expect( + (tester.firstWidget(iconFinder.at(i)) as ZetaIcon).color, + colors.mainSubtle, + ); + } + }); + + // label font styles are correct + // icon sizes are correct + + // hovered state label and icon colors are correct + // selected state label and icon colors are correct + }); + + group('Interaction Tests', () { + // clicking on an item calls the onPressed callback + // clicking on an item removes the children list after it + }); + + group('Golden Tests', () { + // goldenTest(goldenFile, widget, 'PNG_FILE_NAME'); + }); + + group('Performance Tests', () {}); +} diff --git a/test/src/components/chips/chip_test.dart b/test/src/components/chips/chip_test.dart index 9a9781e2..aa324ae7 100644 --- a/test/src/components/chips/chip_test.dart +++ b/test/src/components/chips/chip_test.dart @@ -16,13 +16,21 @@ void main() { group('Accessibility Tests', () {}); group('Content Tests', () { - // final debugFillProperties = { - // '': '', - // }; - // debugFillPropertiesTest( - // widget, - // debugFillProperties, - // ); + final debugFillProperties = { + 'label': '"Test Chip"', + 'rounded': 'null', + 'selected': 'null', + 'draggable': 'false', + 'data': 'null', + 'onDragCompleted': 'null', + 'semanticLabel': 'null', + 'onTap': 'null', + 'onToggle': 'null', + }; + debugFillPropertiesTest( + const ZetaChip(label: 'Test Chip'), + debugFillProperties, + ); testWidgets('renders label correctly', (WidgetTester tester) async { await tester.pumpWidget( diff --git a/test/src/components/chips/golden/status_chip_default.png b/test/src/components/chips/golden/status_chip_default.png new file mode 100644 index 00000000..e0bad968 Binary files /dev/null and b/test/src/components/chips/golden/status_chip_default.png differ diff --git a/test/src/components/chips/golden/status_chip_long.png b/test/src/components/chips/golden/status_chip_long.png new file mode 100644 index 00000000..03f56625 Binary files /dev/null and b/test/src/components/chips/golden/status_chip_long.png differ diff --git a/test/src/components/chips/golden/status_chip_sharp.png b/test/src/components/chips/golden/status_chip_sharp.png new file mode 100644 index 00000000..e0bad968 Binary files /dev/null and b/test/src/components/chips/golden/status_chip_sharp.png differ diff --git a/test/src/components/chips/status_chip_test.dart b/test/src/components/chips/status_chip_test.dart new file mode 100644 index 00000000..d5e18bb2 --- /dev/null +++ b/test/src/components/chips/status_chip_test.dart @@ -0,0 +1,231 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:zeta_flutter/zeta_flutter.dart'; + +import '../../../test_utils/test_app.dart'; +import '../../../test_utils/tolerant_comparator.dart'; +import '../../../test_utils/utils.dart'; + +void main() { + const String parentFolder = 'chips'; + + const goldenFile = GoldenFiles(component: parentFolder); + setUpAll(() { + goldenFileComparator = TolerantComparator(goldenFile.uri); + }); + + group('Accessibility Tests', () { + testWidgets('label meets accessibility requirements', (WidgetTester tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + const TestApp( + home: ZetaStatusChip( + label: 'Label', + ), + ), + ); + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + + handle.dispose(); + }); + }); + + group('Content Tests', () { + final debugFillProperties = { + 'label': '"Label"', + 'draggable': 'false', + 'data': 'null', + 'onDragCompleted': 'null', + 'semanticLabel': 'null', + }; + debugFillPropertiesTest( + const ZetaStatusChip( + label: 'Label', + ), + debugFillProperties, + ); + + testWidgets('renders label correctly', (WidgetTester tester) async { + await tester.pumpWidget( + const TestApp( + home: ZetaStatusChip( + label: 'Label', + ), + ), + ); + + expect(find.text('Label'), findsOneWidget); + }); + + testWidgets('renders label correctly when label is long', (WidgetTester tester) async { + await tester.pumpWidget( + const TestApp( + home: ZetaStatusChip( + label: 'Label that is very very long', + ), + ), + ); + + final Finder textFinder = find.text('Label that is very very long'); + + expect(textFinder, findsOneWidget); + }); + }); + + group('Dimensions Tests', () { + testWidgets('horizontal padding is 8 and vertical padding is 4', (WidgetTester tester) async { + await tester.pumpWidget( + const TestApp( + home: ZetaStatusChip( + label: 'Label', + ), + ), + ); + final Finder finder = find.byType(Container); + expect(finder, findsOneWidget); + final Container widget = tester.widget(finder); + expect( + widget.padding, + const EdgeInsets.symmetric( + horizontal: 8, + vertical: 4, + ), + ); + }); + }); + + group('Styling Tests', () { + testWidgets('background color is ZetaColors.surfaceWarm and border radius is 8', (WidgetTester tester) async { + await tester.pumpWidget( + const TestApp( + home: ZetaStatusChip( + label: 'Label', + ), + ), + ); + final Finder finder = find.byType(Container); + expect(finder, findsOneWidget); + final Container widget = tester.widget(finder); + expect( + widget.decoration, + BoxDecoration( + color: const ZetaSemanticColorsAA(primitives: ZetaPrimitivesLight()).surfaceWarm, + borderRadius: BorderRadius.circular(8), + ), + ); + }); + + testWidgets('border radius is null when rounded is false', (WidgetTester tester) async { + await tester.pumpWidget( + const TestApp( + home: ZetaStatusChip( + label: 'Label', + rounded: false, + ), + ), + ); + final Finder finder = find.byType(Container); + expect(finder, findsOneWidget); + final Container widget = tester.widget(finder); + expect( + widget.decoration, + BoxDecoration( + color: const ZetaSemanticColorsAA(primitives: ZetaPrimitivesLight()).surfaceWarm, + ), + ); + }); + + testWidgets('text style is ZetaTextStyles.bodyXSmall and text color is mainDefault', (WidgetTester tester) async { + await tester.pumpWidget( + const TestApp( + home: ZetaStatusChip( + label: 'Label', + ), + ), + ); + final Finder finder = find.byType(Text); + expect(finder, findsOneWidget); + final Text widget = tester.widget(finder); + expect( + widget.style, + ZetaTextStyles.bodyXSmall.copyWith( + color: const ZetaSemanticColorsAA(primitives: ZetaPrimitivesLight()).mainDefault, + ), + ); + }); + }); + + group('Interaction Tests', () { + testWidgets('chip calls onDragCompleted and parses data to DragTarget when drag is completed', + (WidgetTester tester) async { + bool dragCompleted = false; + String? dragData; + + await tester.pumpWidget( + TestApp( + home: Column( + children: [ + ZetaStatusChip( + label: 'Label', + draggable: true, + data: 'data', + onDragCompleted: () { + dragCompleted = true; + }, + ), + DragTarget( + onAcceptWithDetails: (details) => dragData = details.data, + builder: (BuildContext context, List candidateData, List rejectedData) { + return const SizedBox( + width: 100, + height: 100, + ); + }, + ), + ], + ), + ), + ); + + final Finder finder = find.byType(Draggable); + expect(finder, findsOneWidget); + + final TestGesture gesture = await tester.startGesture(tester.getCenter(finder)); + await gesture.moveTo(tester.getCenter(find.byType(DragTarget))); + await gesture.up(); + + expect(dragCompleted, isTrue); + expect(dragData, 'data'); + }); + }); + + group('Golden Tests', () { + goldenTest( + goldenFile, + const ZetaStatusChip( + label: 'Label', + ), + 'status_chip_default', + ); + goldenTest( + goldenFile, + const ZetaStatusChip( + label: 'Label', + rounded: false, + ), + 'status_chip_sharp', + ); + goldenTest( + goldenFile, + const ZetaStatusChip( + label: 'Label that is very very long', + ), + 'status_chip_long', + ); + }); + + group('Performance Tests', () {}); +} diff --git a/test/src/components/comms_button/comms_button_test.dart b/test/src/components/comms_button/comms_button_test.dart index 539792c0..67ace1d5 100644 --- a/test/src/components/comms_button/comms_button_test.dart +++ b/test/src/components/comms_button/comms_button_test.dart @@ -79,7 +79,7 @@ void main() { 'semanticLabel': 'null', 'type': 'positive', 'size': 'medium', - 'icon': 'IconData(U+0E16B)', + 'icon': 'IconData(U+0${ZetaIcons.phone.codePoint.toRadixString(16).toUpperCase()})', }; debugFillPropertiesTest( const ZetaCommsButton( diff --git a/test/src/components/navigation_bar/golden/navigation_bar_action.png b/test/src/components/navigation_bar/golden/navigation_bar_action.png new file mode 100644 index 00000000..4639ee1c Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_action.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_current_index_0.png b/test/src/components/navigation_bar/golden/navigation_bar_current_index_0.png new file mode 100644 index 00000000..f74cf40a Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_current_index_0.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_current_index_1.png b/test/src/components/navigation_bar/golden/navigation_bar_current_index_1.png new file mode 100644 index 00000000..7eb76580 Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_current_index_1.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_current_index_2.png b/test/src/components/navigation_bar/golden/navigation_bar_current_index_2.png new file mode 100644 index 00000000..382e1066 Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_current_index_2.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_current_index_3.png b/test/src/components/navigation_bar/golden/navigation_bar_current_index_3.png new file mode 100644 index 00000000..019c7f84 Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_current_index_3.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_default.png b/test/src/components/navigation_bar/golden/navigation_bar_default.png new file mode 100644 index 00000000..3f278f56 Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_default.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider.png b/test/src/components/navigation_bar/golden/navigation_bar_divider.png new file mode 100644 index 00000000..006174fc Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_divider.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider_at_0.png b/test/src/components/navigation_bar/golden/navigation_bar_divider_at_0.png new file mode 100644 index 00000000..e7ab82e0 Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_divider_at_0.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider_at_1.png b/test/src/components/navigation_bar/golden/navigation_bar_divider_at_1.png new file mode 100644 index 00000000..b123c186 Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_divider_at_1.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider_at_2.png b/test/src/components/navigation_bar/golden/navigation_bar_divider_at_2.png new file mode 100644 index 00000000..006174fc Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_divider_at_2.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_divider_at_3.png b/test/src/components/navigation_bar/golden/navigation_bar_divider_at_3.png new file mode 100644 index 00000000..af3022af Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_divider_at_3.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_shrink_items.png b/test/src/components/navigation_bar/golden/navigation_bar_shrink_items.png new file mode 100644 index 00000000..3f278f56 Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_shrink_items.png differ diff --git a/test/src/components/navigation_bar/golden/navigation_bar_split.png b/test/src/components/navigation_bar/golden/navigation_bar_split.png new file mode 100644 index 00000000..04c09638 Binary files /dev/null and b/test/src/components/navigation_bar/golden/navigation_bar_split.png differ diff --git a/test/src/components/navigation_bar/navigation_bar_test.dart b/test/src/components/navigation_bar/navigation_bar_test.dart new file mode 100644 index 00000000..128e1539 --- /dev/null +++ b/test/src/components/navigation_bar/navigation_bar_test.dart @@ -0,0 +1,521 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:zeta_flutter/src/components/navigation%20bar/navigation_bar.dart'; +import 'package:zeta_flutter/zeta_flutter.dart'; + +import '../../../test_utils/test_app.dart'; +import '../../../test_utils/tolerant_comparator.dart'; +import '../../../test_utils/utils.dart'; + +void main() { + const String parentFolder = 'navigation_bar'; + + const goldenFile = GoldenFiles(component: parentFolder); + setUpAll(() { + goldenFileComparator = TolerantComparator(goldenFile.uri); + }); + + const items = [ + ZetaNavigationBarItem( + icon: ZetaIcons.star, + label: 'Label0', + badge: ZetaIndicator( + value: 2, + ), + ), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label1', badge: ZetaIndicator(value: 2)), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label2'), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label3'), + ]; + final action = ZetaButton.primary( + label: 'Button', + onPressed: () {}, + ); + + group('Accessibility Tests', () { + testWidgets('meets accessibility requirements', (WidgetTester tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + currentIndex: 0, + ), + ), + ); + + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + handle.dispose(); + }); + + testWidgets('meets accessibility requirements with action', (WidgetTester tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar.action( + items: items, + action: action, + ), + ), + ); + + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + handle.dispose(); + }); + + testWidgets('meets accessibility requirements with divider', (WidgetTester tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + const TestApp( + home: ZetaNavigationBar.divided( + items: items, + dividerIndex: 2, + ), + ), + ); + + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + handle.dispose(); + }); + + testWidgets('meets accessibility requirements with split', (WidgetTester tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + const TestApp( + home: ZetaNavigationBar.split( + items: items, + ), + ), + ); + + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + handle.dispose(); + }); + + testWidgets('meets accessibility requirements with shrink items', (WidgetTester tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + shrinkItems: true, + ), + ), + ); + + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + handle.dispose(); + }); + }); + + group('Content Tests', () { + debugFillPropertiesTest( + ZetaNavigationBar( + items: items, + ), + { + 'items': + "Instance of 'ZetaNavigationBarItem', Instance of 'ZetaNavigationBarItem', Instance of 'ZetaNavigationBarItem', Instance of 'ZetaNavigationBarItem'", + 'currentIndex': 'null', + 'onTap': 'null', + 'splitItems': 'false', + 'dividerIndex': 'null', + 'semanticLabel': 'null', + }, + ); + + testWidgets('renders the correct number of items', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + ), + ), + ); + + final itemsFinder = find.byType(NavigationItem); + expect(itemsFinder, findsNWidgets(items.length)); + }); + + testWidgets('renders the correct label for each item', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + ), + ), + ); + + for (int i = 0; i < items.length; i++) { + final labelFinder = find.text('Label$i'); + expect(labelFinder, findsOneWidget); + } + }); + + testWidgets('renders the correct icon for each item', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + ), + ), + ); + + final iconFinder = find.byElementType(ZetaIcon); + final icons = tester.widgetList(iconFinder).map((e) => e as ZetaIcon).toList(); + for (final icon in icons) { + expect(icon.icon, ZetaIcons.star); + } + }); + testWidgets('passes the correct badge content for each item', (WidgetTester tester) async { + const items1 = [ + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label0', badge: ZetaIndicator(value: 0)), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label1', badge: ZetaIndicator(value: 1)), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label2', badge: ZetaIndicator(value: 2)), + ZetaNavigationBarItem(icon: ZetaIcons.star, label: 'Label3', badge: ZetaIndicator(value: 3)), + ]; + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items1, + ), + ), + ); + + final badgeFinder = find.byType(ZetaIndicator); + final badges = tester.widgetList(badgeFinder).map((e) => e as ZetaIndicator).toList(); + for (int i = 0; i < badges.length; i++) { + expect(badges[i].value, i); + } + }); + + testWidgets('renders the action', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar.action( + items: items, + action: action, + ), + ), + ); + + final buttonFinder = find.byType(ZetaButton); + expect(buttonFinder, findsOneWidget); + }); + + testWidgets('renders the divider', (WidgetTester tester) async { + await tester.pumpWidget( + const TestApp( + home: ZetaNavigationBar.divided( + items: items, + dividerIndex: 2, + ), + ), + ); + final context = getBuildContext(tester, ZetaNavigationBar); + + final dividerFinder = find.byWidgetPredicate( + (widget) => widget is Container && widget.color == Zeta.of(context).colors.borderSubtle, + ); + + expect(dividerFinder, findsOneWidget); + }); + }); + + group('Dimensions Tests', () { + testWidgets('renders the correct padding', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + ), + ), + ); + final context = getBuildContext(tester, ZetaNavigationBar); + + final containerFinder = find.byType(Container).first; + + expect( + tester.widget(containerFinder).padding, + EdgeInsets.symmetric(horizontal: Zeta.of(context).spacing.large), + ); + }); + + testWidgets('items render the correct padding', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + ), + ), + ); + final context = getBuildContext(tester, ZetaNavigationBar); + + final itemFinder = find.byType(NavigationItem); + if (itemFinder.evaluate().isEmpty) { + fail('No items found'); + } else if (itemFinder.evaluate().length != items.length) { + fail('Incorrect number of items found'); + } else { + for (int i = 0; i < items.length; i++) { + expect( + tester + .widget(find.descendant(of: itemFinder.at(i), matching: find.byType(Container)).first) + .padding, + EdgeInsets.only( + left: Zeta.of(context).spacing.small, + right: Zeta.of(context).spacing.small, + bottom: Zeta.of(context).spacing.small, + ), + ); + } + } + }); + + testWidgets('the divider is the correct size', (WidgetTester tester) async { + await tester.pumpWidget( + const TestApp( + home: ZetaNavigationBar.divided( + items: items, + dividerIndex: 2, + ), + ), + ); + final context = getBuildContext(tester, ZetaNavigationBar); + + final dividerFinder = find.byWidgetPredicate( + (widget) => widget is Container && widget.color == Zeta.of(context).colors.borderSubtle, + ); + + expect(dividerFinder, findsOneWidget); + + expect(dividerFinder.evaluate().first.size?.height, Zeta.of(context).spacing.xl_7); + expect(dividerFinder.evaluate().first.size?.width, 1); + }); + }); + + group('Styling Tests', () { + testWidgets('renders the correct background color', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + ), + ), + ); + final context = getBuildContext(tester, ZetaNavigationBar); + + final containerFinder = find.byType(Container).first; + + final containerWidget = tester.widget(containerFinder); + final boxDecoration = containerWidget.decoration! as BoxDecoration; + + expect(boxDecoration.color, Zeta.of(context).colors.surfacePrimary); + }); + + testWidgets('items are the correct color', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + ), + ), + ); + final context = getBuildContext(tester, ZetaNavigationBar); + + final itemFinder = find.byType(NavigationItem); + final icon = + tester.widget(find.descendant(of: itemFinder.first, matching: find.byType(ZetaIcon)).first); + final label = tester.widget(find.descendant(of: itemFinder.first, matching: find.text('Label0'))); + + expect(icon.color, Zeta.of(context).colors.mainSubtle); + expect(label.style, Theme.of(context).textTheme.labelSmall?.copyWith(color: Zeta.of(context).colors.mainSubtle)); + }); + + testWidgets('selected item is the correct color', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + currentIndex: 0, + ), + ), + ); + final context = getBuildContext(tester, ZetaNavigationBar); + + final itemFinder = find.byType(NavigationItem); + final icon = + tester.widget(find.descendant(of: itemFinder.first, matching: find.byType(ZetaIcon)).first); + final label = tester.widget(find.descendant(of: itemFinder.first, matching: find.text('Label0'))); + + expect(icon.color, Zeta.of(context).colors.mainPrimary); + expect(label.style, Theme.of(context).textTheme.labelSmall?.copyWith(color: Zeta.of(context).colors.mainPrimary)); + }); + + testWidgets('hover background color is correct', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + currentIndex: 0, + ), + ), + ); + final context = getBuildContext(tester, ZetaNavigationBar); + + final itemFinder = find.byType(NavigationItem).first; + + final gesture = await tester.createGesture(kind: PointerDeviceKind.mouse); + await gesture.addPointer(location: tester.getCenter(itemFinder)); + addTearDown(gesture.removePointer); + + await tester.pumpAndSettle(); + + final inkResponse = + tester.widget(find.descendant(of: itemFinder, matching: find.byType(InkResponse)).first); + + expect(inkResponse.hoverColor, Zeta.of(context).colors.surfaceHover); + }); + }); + + group('Interaction Tests', () { + testWidgets('calls onTap when an item is tapped', (WidgetTester tester) async { + var tappedIndex = -1; + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + onTap: (index) => tappedIndex = index, + ), + ), + ); + + final itemFinder = find.byType(NavigationItem).first; + await tester.tap(itemFinder); + + expect(tappedIndex, 0); + + final lastItemFinder = find.byType(NavigationItem).last; + await tester.tap(lastItemFinder); + + expect(tappedIndex, 3); + }); + + testWidgets('calls onTap when an item is tapped off center', (WidgetTester tester) async { + var tappedIndex = -1; + await tester.pumpWidget( + TestApp( + home: ZetaNavigationBar( + items: items, + onTap: (index) => tappedIndex = index, + ), + ), + ); + + final itemFinder = find.byType(NavigationItem).first; + + await tester.tapAt(tester.getCenter(itemFinder) + const Offset(80, 0)); + expect(tappedIndex, 0); + + final lastItemFinder = find.byType(NavigationItem).last; + + await tester.tapAt(tester.getCenter(lastItemFinder) + const Offset(-80, 0)); + expect(tappedIndex, 3); + }); + + testWidgets('updates the selected item when an item is tapped', (WidgetTester tester) async { + var selectedIndex = -1; + await tester.pumpWidget( + StatefulBuilder( + builder: (context, setState) { + return TestApp( + home: ZetaNavigationBar( + items: items, + currentIndex: selectedIndex, + onTap: (val) => setState(() { + selectedIndex = val; + }), + ), + ); + }, + ), + ); + + final itemFinder = find.byType(NavigationItem).first; + await tester.tap(itemFinder); + expect(selectedIndex, 0); + + final lastItemFinder = find.byType(NavigationItem).last; + await tester.tap(lastItemFinder); + expect(selectedIndex, 3); + }); + }); + + group('Golden Tests', () { + goldenTest( + goldenFile, + ZetaNavigationBar(items: items), + 'navigation_bar_default', + ); + goldenTest( + goldenFile, + ZetaNavigationBar( + items: items, + shrinkItems: true, + ), + 'navigation_bar_shrink_items', + ); + for (int i = 0; i < items.length; i++) { + goldenTest( + goldenFile, + ZetaNavigationBar( + items: items, + currentIndex: i, + ), + 'navigation_bar_current_index_$i', + ); + + goldenTest( + goldenFile, + ZetaNavigationBar.divided( + items: items, + dividerIndex: i, + ), + 'navigation_bar_divider_at_$i', + ); + } + goldenTest( + goldenFile, + const ZetaNavigationBar.action( + items: items, + action: ZetaButton(label: 'Button'), + ), + 'navigation_bar_action', + ); + goldenTest( + goldenFile, + const ZetaNavigationBar.split( + items: items, + ), + 'navigation_bar_split', + ); + }); + + group('Performance Tests', () {}); +} diff --git a/test/src/components/range_selector/golden/range_selector_rounded_continuous.png b/test/src/components/range_selector/golden/range_selector_rounded_continuous.png new file mode 100644 index 00000000..536ef9a2 Binary files /dev/null and b/test/src/components/range_selector/golden/range_selector_rounded_continuous.png differ diff --git a/test/src/components/range_selector/golden/range_selector_rounded_disabled.png b/test/src/components/range_selector/golden/range_selector_rounded_disabled.png new file mode 100644 index 00000000..921e12ed Binary files /dev/null and b/test/src/components/range_selector/golden/range_selector_rounded_disabled.png differ diff --git a/test/src/components/range_selector/golden/range_selector_rounded_stepped.png b/test/src/components/range_selector/golden/range_selector_rounded_stepped.png new file mode 100644 index 00000000..f4a64e7b Binary files /dev/null and b/test/src/components/range_selector/golden/range_selector_rounded_stepped.png differ diff --git a/test/src/components/range_selector/golden/range_selector_sharp_continuous.png b/test/src/components/range_selector/golden/range_selector_sharp_continuous.png new file mode 100644 index 00000000..e263b955 Binary files /dev/null and b/test/src/components/range_selector/golden/range_selector_sharp_continuous.png differ diff --git a/test/src/components/range_selector/golden/range_selector_sharp_disabled.png b/test/src/components/range_selector/golden/range_selector_sharp_disabled.png new file mode 100644 index 00000000..79fd83d6 Binary files /dev/null and b/test/src/components/range_selector/golden/range_selector_sharp_disabled.png differ diff --git a/test/src/components/range_selector/golden/range_selector_sharp_stepped.png b/test/src/components/range_selector/golden/range_selector_sharp_stepped.png new file mode 100644 index 00000000..4a91d75e Binary files /dev/null and b/test/src/components/range_selector/golden/range_selector_sharp_stepped.png differ diff --git a/test/src/components/range_selector/golden/range_slider_rounded_continuous.png b/test/src/components/range_selector/golden/range_slider_rounded_continuous.png new file mode 100644 index 00000000..3ec1c020 Binary files /dev/null and b/test/src/components/range_selector/golden/range_slider_rounded_continuous.png differ diff --git a/test/src/components/range_selector/golden/range_slider_rounded_disabled.png b/test/src/components/range_selector/golden/range_slider_rounded_disabled.png new file mode 100644 index 00000000..4e0ab618 Binary files /dev/null and b/test/src/components/range_selector/golden/range_slider_rounded_disabled.png differ diff --git a/test/src/components/range_selector/golden/range_slider_rounded_stepped.png b/test/src/components/range_selector/golden/range_slider_rounded_stepped.png new file mode 100644 index 00000000..e7b1bd39 Binary files /dev/null and b/test/src/components/range_selector/golden/range_slider_rounded_stepped.png differ diff --git a/test/src/components/range_selector/golden/range_slider_sharp_continuous.png b/test/src/components/range_selector/golden/range_slider_sharp_continuous.png new file mode 100644 index 00000000..db3e30df Binary files /dev/null and b/test/src/components/range_selector/golden/range_slider_sharp_continuous.png differ diff --git a/test/src/components/range_selector/golden/range_slider_sharp_disabled.png b/test/src/components/range_selector/golden/range_slider_sharp_disabled.png new file mode 100644 index 00000000..0c511caf Binary files /dev/null and b/test/src/components/range_selector/golden/range_slider_sharp_disabled.png differ diff --git a/test/src/components/range_selector/golden/range_slider_sharp_stepped.png b/test/src/components/range_selector/golden/range_slider_sharp_stepped.png new file mode 100644 index 00000000..40c223c9 Binary files /dev/null and b/test/src/components/range_selector/golden/range_slider_sharp_stepped.png differ diff --git a/test/src/components/range_selector/range_selector_test.dart b/test/src/components/range_selector/range_selector_test.dart new file mode 100644 index 00000000..168cc81e --- /dev/null +++ b/test/src/components/range_selector/range_selector_test.dart @@ -0,0 +1,509 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:zeta_flutter/zeta_flutter.dart'; + +import '../../../test_utils/test_app.dart'; +import '../../../test_utils/tolerant_comparator.dart'; +import '../../../test_utils/utils.dart'; + +void main() { + const String parentFolder = 'range_selector'; + + const goldenFile = GoldenFiles(component: parentFolder); + setUpAll(() { + goldenFileComparator = TolerantComparator(goldenFile.uri, tolerance: 0.001); + }); + + group('Accessibility Tests', () { + meetsAccessbilityGuidelinesTest( + ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + label: 'Range Selector', + ), + ); + }); + + group('Content Tests', () { + final debugFillProperties = { + 'label': '"Range Selector"', + 'divisions': 'null', + 'showValues': 'true', + 'rounded': 'null', + 'min': '0.0', + 'max': '100.0', + 'initialValues': 'RangeValues(20.0, 80.0)', + }; + debugFillPropertiesTest( + ZetaRangeSelector( + label: 'Range Selector', + initialValues: const RangeValues(20, 80), + onChange: (value) {}, + ), + debugFillProperties, + ); + + testWidgets('has the correct default values', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + ), + ), + ); + + await tester.pumpAndSettle(); + + final slider = find.byType(RangeSlider); + final sliderWidget = tester.widget(slider); + + final zetaSelector = find.byType(ZetaRangeSelector); + final zetaSelectorWidget = tester.widget(zetaSelector); + + final semantics = find.byType(Semantics).first; + final semanticsWidget = tester.widget(semantics); + + expect(zetaSelectorWidget.rounded, null); + expect(sliderWidget.values, const RangeValues(20, 80)); + expect(sliderWidget.min, 0); + expect(sliderWidget.max, 100); + expect(zetaSelectorWidget.label, null); + expect(sliderWidget.divisions, null); + expect(semanticsWidget.properties.label, null); + expect(zetaSelectorWidget.showValues, true); + }); + + testWidgets('renders two TextFormFields', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + ), + ), + ); + + await tester.pumpAndSettle(); + + expect(find.byType(TextFormField), findsNWidgets(2)); + }); + + testWidgets('renders one range slider', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + ), + ), + ); + + await tester.pumpAndSettle(); + + expect(find.byType(RangeSlider), findsOneWidget); + }); + + testWidgets('renders a Text widget with the correct label', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + label: 'Range Selector', + ), + ), + ); + + await tester.pumpAndSettle(); + + final label = find.text('Range Selector'); + expect(label, findsOneWidget); + }); + }); + + group('Dimensions Tests', () { + testWidgets('TextFormFields have the correct dimenions', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + ), + ), + ); + + await tester.pumpAndSettle(); + + final textFields = find.byType(TextFormField); + expect(textFields, findsNWidgets(2)); + + expect(tester.getRect(textFields.first).width, 56); + expect(tester.getRect(textFields.first).height, 48); + + expect(tester.getRect(textFields.last).width, 56); + expect(tester.getRect(textFields.last).height, 48); + }); + + // slider has the correct height + testWidgets('Slider has the correct height', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + ), + ), + ); + + await tester.pumpAndSettle(); + + final slider = find.byType(RangeSlider); + expect(tester.getRect(slider).height, 20); + }); + + testWidgets('Padding between TextFormFields and slider', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + ), + ), + ); + + await tester.pumpAndSettle(); + + final textFields = find.byType(TextFormField); + final slider = find.byType(RangeSlider); + + final textFieldRight = tester.getBottomRight(textFields.first); + final sliderLeft = tester.getBottomLeft(slider); + + expect(sliderLeft.dx - textFieldRight.dx, 32); + }); + }); + + group('Styling Tests', () { + testWidgets('Label has the correct font style', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + label: 'Range Selector', + ), + ), + ); + final colors = Zeta.of(tester.element(find.byType(ZetaRangeSelector))).colors; + + await tester.pumpAndSettle(); + + final label = find.text('Range Selector'); + final labelWidget = tester.widget(label); + + expect(labelWidget.style!.color, colors.mainDefault); + expect(labelWidget.style!.fontSize, 14); + expect(labelWidget.style!.fontWeight, FontWeight.w400); + }); + + testWidgets('TextFormField have the correct font style', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + ), + ), + ); + final colors = Zeta.of(tester.element(find.byType(ZetaRangeSelector))).colors; + + await tester.pumpAndSettle(); + + final textFields = find.byType(TextField); + final firstTextFieldWidget = tester.widget(textFields.first); + + expect(firstTextFieldWidget.style!.color, colors.mainSubtle); + expect(firstTextFieldWidget.style!.fontSize, 16); + expect(firstTextFieldWidget.style!.fontWeight, FontWeight.w400); + + final lastTextFieldWidget = tester.widget(textFields.last); + + expect(lastTextFieldWidget.style!.color, colors.mainSubtle); + expect(lastTextFieldWidget.style!.fontSize, 16); + expect(lastTextFieldWidget.style!.fontWeight, FontWeight.w400); + }); + + testWidgets('TextFormFields have the correct border color and width', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + ), + ), + ); + final colors = Zeta.of(tester.element(find.byType(ZetaRangeSelector))).colors; + + await tester.pumpAndSettle(); + + final textFields = find.byType(TextField); + final firstTextFieldWidget = tester.widget(textFields.first); + + expect(firstTextFieldWidget.decoration!.border!.borderSide.color, colors.borderDefault); + expect(firstTextFieldWidget.decoration!.border!.borderSide.width, 1); + + final lastTextFieldWidget = tester.widget(textFields.last); + + expect(lastTextFieldWidget.decoration!.border!.borderSide.color, colors.borderDefault); + expect(lastTextFieldWidget.decoration!.border!.borderSide.width, 1); + }); + + // slider has the correct color + testWidgets('Slider has the correct color', (tester) async { + await tester.pumpWidget( + TestApp( + home: ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + ), + ), + ); + final colors = Zeta.of(tester.element(find.byType(ZetaRangeSelector))).colors; + + final sliderTheme = find.byType(SliderTheme); + final sliderThemeWidget = tester.widget(sliderTheme); + + expect(sliderThemeWidget.data.activeTrackColor, colors.surfaceDefaultInverse); + }); + }); + + group('Interaction Tests', () { + testWidgets('onChange callback is called when value is changed', (tester) async { + double? firstValue; + double? secondValue; + await tester.pumpWidget( + TestApp( + home: Padding( + padding: const EdgeInsets.all(32), + child: ZetaRangeSelector( + label: 'Range Selector', + initialValues: const RangeValues(20, 80), + showValues: false, + onChange: (newValue) { + secondValue = newValue.end; + firstValue = newValue.start; + }, + ), + ), + ), + ); + + await tester.pumpAndSettle(); + final slider = find.byType(RangeSlider); + + final sliderTopLeft = tester.getTopLeft(slider); + + await tester.dragFrom(sliderTopLeft.translate(0, 0), const Offset(250, 0)); + + await tester.pumpAndSettle(); + + await tester.dragFrom(sliderTopLeft.translate(700, 0), const Offset(-250, 0)); + + await tester.pumpAndSettle(); + + expect(firstValue!.round(), 34); + expect(secondValue!.round(), 61); + }); + + testWidgets('TextFormFields set the value of the slider', (tester) async { + RangeValues values = const RangeValues(20, 80); + await tester.pumpWidget( + TestApp( + home: Padding( + padding: const EdgeInsets.all(32), + child: ZetaRangeSelector( + label: 'Range Selector', + initialValues: values, + onChange: (newValues) { + values = newValues; + }, + ), + ), + ), + ); + + final firstTextFinder = find.ancestor(of: find.text('20'), matching: find.byType(TextFormField)); + final secondTextFinder = find.ancestor(of: find.text('80'), matching: find.byType(TextFormField)); + + await tester.pumpAndSettle(); + await tester.enterText(firstTextFinder, '40'); + await tester.testTextInput.receiveAction(TextInputAction.done); + + await tester.enterText(secondTextFinder, '60'); + await tester.testTextInput.receiveAction(TextInputAction.done); + await tester.pump(); + + expect(values, const RangeValues(40, 60)); + }); + + testWidgets('TextFormFields set the value of the slider on tap outside', (tester) async { + RangeValues values = const RangeValues(20, 80); + await tester.pumpWidget( + TestApp( + home: Padding( + padding: const EdgeInsets.all(32), + child: ZetaRangeSelector( + label: 'Range Selector', + initialValues: values, + onChange: (newValues) { + values = newValues; + }, + ), + ), + ), + ); + + final firstTextFinder = find.ancestor(of: find.text('20'), matching: find.byType(TextFormField)); + final secondTextFinder = find.ancestor(of: find.text('80'), matching: find.byType(TextFormField)); + + await tester.pumpAndSettle(); + await tester.enterText(firstTextFinder, '30'); + await tester.pump(); + await tester.tapAt(Offset.zero); + await tester.pump(); + + await tester.pumpAndSettle(); + await tester.enterText(secondTextFinder, '70'); + await tester.pump(); + await tester.tapAt(Offset.zero); + await tester.pump(); + + expect(values, const RangeValues(30, 70)); + }); + }); + + group('Golden Tests', () { + goldenTest( + goldenFile, + ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + showValues: false, + ), + 'range_slider_rounded_continuous', + ); + goldenTest( + goldenFile, + ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + showValues: false, + divisions: 10, + ), + 'range_slider_rounded_stepped', + ); + goldenTest( + goldenFile, + ZetaRangeSelector( + initialValues: const RangeValues(20, 80), + showValues: false, + ), + 'range_slider_rounded_disabled', + ); + + goldenTest( + goldenFile, + ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + showValues: false, + rounded: false, + ), + 'range_slider_sharp_continuous', + ); + goldenTest( + goldenFile, + ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + showValues: false, + divisions: 10, + rounded: false, + ), + 'range_slider_sharp_stepped', + ); + goldenTest( + goldenFile, + ZetaRangeSelector( + initialValues: const RangeValues(20, 80), + showValues: false, + rounded: false, + ), + 'range_slider_sharp_disabled', + ); + + goldenTest( + goldenFile, + ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + label: 'Label', + ), + 'range_selector_rounded_continuous', + ); + goldenTest( + goldenFile, + ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + label: 'Label', + divisions: 10, + ), + 'range_selector_rounded_stepped', + ); + goldenTest( + goldenFile, + ZetaRangeSelector( + initialValues: const RangeValues(20, 80), + label: 'Label', + divisions: 10, + ), + 'range_selector_rounded_disabled', + ); + + goldenTest( + goldenFile, + ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + label: 'Label', + rounded: false, + ), + 'range_selector_sharp_continuous', + ); + goldenTest( + goldenFile, + ZetaRangeSelector( + onChange: (value) {}, + initialValues: const RangeValues(20, 80), + label: 'Label', + rounded: false, + divisions: 10, + ), + 'range_selector_sharp_stepped', + ); + goldenTest( + goldenFile, + ZetaRangeSelector( + initialValues: const RangeValues(20, 80), + label: 'Label', + rounded: false, + divisions: 10, + ), + 'range_selector_sharp_disabled', + ); + }); + + group('Performance Tests', () {}); +} diff --git a/test/src/components/stepper/stepper_test.dart b/test/src/components/stepper/stepper_test.dart index b60c9399..fa6436ff 100644 --- a/test/src/components/stepper/stepper_test.dart +++ b/test/src/components/stepper/stepper_test.dart @@ -15,7 +15,7 @@ void main() { goldenFileComparator = TolerantComparator(goldenFile.uri); }); - group('ZetaStepper Accessibility Tests', () { + group('Accessibility Tests', () { testWidgets('Horizontal stepper meets accessibility requirements', (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); await tester.pumpWidget( @@ -91,7 +91,7 @@ void main() { }); }); - group('ZetaStepper Content Tests', () { + group('Content Tests', () { testWidgets('Horizontal stepper renders the correct steps', (WidgetTester tester) async { await tester.pumpWidget( TestApp( @@ -202,7 +202,7 @@ void main() { ); }); - group('ZetaStepper Dimensions Tests', () { + group('Dimensions Tests', () { testWidgets('StepIcon horiztonal has the correct size', (WidgetTester tester) async { await tester.pumpWidget( const TestApp( @@ -275,7 +275,7 @@ void main() { }); }); - group('ZetaStepper Styling Tests', () { + group('Styling Tests', () { testWidgets( 'StepIcon has the correct colour when enabled', (WidgetTester tester) async { @@ -401,7 +401,7 @@ void main() { ); }); - group('ZetaStepper Interaction Tests', () { + group('Interaction Tests', () { testWidgets('Horizontal stepper calls onStepTapped when a step is tapped', (WidgetTester tester) async { int tappedStep = -1; await tester.pumpWidget( @@ -448,7 +448,7 @@ void main() { }); }); - group('ZetaStepper Golden Tests', () { + group('Golden Tests', () { goldenTest( goldenFile, const ZetaStepper( diff --git a/test/src/components/tooltip/tooltip_test.mocks.dart b/test/src/components/tooltip/tooltip_test.mocks.dart index f7f72452..1b36a3ba 100644 --- a/test/src/components/tooltip/tooltip_test.mocks.dart +++ b/test/src/components/tooltip/tooltip_test.mocks.dart @@ -333,6 +333,7 @@ class MockZeta extends _i1.Mock implements _i2.Zeta { String? prefixLineOne = r'', String? prefixOtherLines, _i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.debug, + int? wrapWidth = 65, }) => (super.noSuchMethod( Invocation.method( @@ -342,6 +343,7 @@ class MockZeta extends _i1.Mock implements _i2.Zeta { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, + #wrapWidth: wrapWidth, }, ), returnValue: _i6.dummyValue( @@ -353,6 +355,7 @@ class MockZeta extends _i1.Mock implements _i2.Zeta { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, + #wrapWidth: wrapWidth, }, ), ), @@ -365,6 +368,7 @@ class MockZeta extends _i1.Mock implements _i2.Zeta { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, + #wrapWidth: wrapWidth, }, ), ), diff --git a/test/src/components/top_app_bar/top_app_bar_test.dart b/test/src/components/top_app_bar/top_app_bar_test.dart index 8ae60e83..921ab1cb 100644 --- a/test/src/components/top_app_bar/top_app_bar_test.dart +++ b/test/src/components/top_app_bar/top_app_bar_test.dart @@ -14,7 +14,7 @@ void main() { goldenFileComparator = TolerantComparator(goldenFile.uri); }); - group('ZetaTopAppBar Accessibility Tests', () { + group('Accessibility Tests', () { testWidgets('ZetaTopAppBar meets accessibility requirements', (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); await tester.pumpWidget( @@ -87,7 +87,7 @@ void main() { }); }); - group('ZetaTopAppBar Content Tests', () { + group('Content Tests', () { final debugFillProperties = { 'titleTextStyle': 'null', 'onSearch': 'null', @@ -216,7 +216,7 @@ void main() { }); }); - group('ZetaTopAppBar Dimensions Tests', () { + group('Dimensions Tests', () { testWidgets('ZetaTopAppBar has the correct height', (WidgetTester tester) async { await tester.pumpWidget( const TestApp( @@ -231,7 +231,7 @@ void main() { }); }); - group('ZetaTopAppBar Styling Tests', () { + group('Styling Tests', () { testWidgets('ZetaTopAppBar has the correct background color', (WidgetTester tester) async { await tester.pumpWidget( const TestApp( @@ -247,7 +247,7 @@ void main() { }); }); - group('ZetaTopAppBar Interaction Tests', () { + group('Interaction Tests', () { late ZetaSearchController searchController; const searchLabel = 'Search'; const clearLabel = 'Clear'; @@ -430,7 +430,7 @@ void main() { }); }); - group('ZetaTopAppBar Golden Tests', () { + group('Golden Tests', () { goldenTest( goldenFile, const ZetaTopAppBar( @@ -553,5 +553,5 @@ void main() { ); }); - group('ZetaTopAppBar Performance Tests', () {}); + group('Performance Tests', () {}); } diff --git a/test/src/utils/extensions_test.mocks.dart b/test/src/utils/extensions_test.mocks.dart index 22477d9b..5debe8c9 100644 --- a/test/src/utils/extensions_test.mocks.dart +++ b/test/src/utils/extensions_test.mocks.dart @@ -1602,6 +1602,7 @@ class MockZeta extends _i1.Mock implements _i6.Zeta { String? prefixLineOne = r'', String? prefixOtherLines, _i3.DiagnosticLevel? minLevel = _i3.DiagnosticLevel.debug, + int? wrapWidth = 65, }) => (super.noSuchMethod( Invocation.method( @@ -1611,6 +1612,7 @@ class MockZeta extends _i1.Mock implements _i6.Zeta { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, + #wrapWidth: wrapWidth, }, ), returnValue: _i8.dummyValue( @@ -1622,6 +1624,7 @@ class MockZeta extends _i1.Mock implements _i6.Zeta { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, + #wrapWidth: wrapWidth, }, ), ), @@ -1634,6 +1637,7 @@ class MockZeta extends _i1.Mock implements _i6.Zeta { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, + #wrapWidth: wrapWidth, }, ), ), diff --git a/test/src/utils/rounded_test.mocks.dart b/test/src/utils/rounded_test.mocks.dart index cbf28086..b3adf2bb 100644 --- a/test/src/utils/rounded_test.mocks.dart +++ b/test/src/utils/rounded_test.mocks.dart @@ -333,6 +333,7 @@ class MockZeta extends _i1.Mock implements _i2.Zeta { String? prefixLineOne = r'', String? prefixOtherLines, _i4.DiagnosticLevel? minLevel = _i4.DiagnosticLevel.debug, + int? wrapWidth = 65, }) => (super.noSuchMethod( Invocation.method( @@ -342,6 +343,7 @@ class MockZeta extends _i1.Mock implements _i2.Zeta { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, + #wrapWidth: wrapWidth, }, ), returnValue: _i6.dummyValue( @@ -353,6 +355,7 @@ class MockZeta extends _i1.Mock implements _i2.Zeta { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, + #wrapWidth: wrapWidth, }, ), ), @@ -365,6 +368,7 @@ class MockZeta extends _i1.Mock implements _i2.Zeta { #prefixLineOne: prefixLineOne, #prefixOtherLines: prefixOtherLines, #minLevel: minLevel, + #wrapWidth: wrapWidth, }, ), ), diff --git a/test/test_utils/utils.dart b/test/test_utils/utils.dart index ec5c9704..bb35d331 100644 --- a/test/test_utils/utils.dart +++ b/test/test_utils/utils.dart @@ -1,3 +1,5 @@ +// ignore_for_file: avoid_print + import 'dart:io'; import 'package:collection/collection.dart'; @@ -77,7 +79,48 @@ void debugFillPropertiesTest(Widget widget, Map properties) { widget.debugFillProperties(diagnostics); properties.forEach((key, value) { - expect(diagnostics.finder(key), value); + try { + expect(diagnostics.finder(key), value); + } catch (e) { + print('Error on $key'); + rethrow; + } }); }); } + +void meetsAccessbilityGuidelinesTest( + Widget widget, { + ThemeMode themeMode = ThemeMode.system, + Size? screenSize, + bool? rounded, + Future Function(WidgetTester)? setUp, + Future Function(WidgetTester)? beforeTest, +}) { + testWidgets('meets accessibility requirements', (WidgetTester tester) async { + final SemanticsHandle handle = tester.ensureSemantics(); + if (setUp != null) { + await setUp(tester); + } + + await tester.pumpWidget( + TestApp( + screenSize: screenSize, + themeMode: themeMode, + rounded: rounded, + home: widget, + ), + ); + + if (beforeTest != null) { + await beforeTest(tester); + } + + await expectLater(tester, meetsGuideline(androidTapTargetGuideline)); + await expectLater(tester, meetsGuideline(iOSTapTargetGuideline)); + await expectLater(tester, meetsGuideline(labeledTapTargetGuideline)); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + + handle.dispose(); + }); +}