solar_iconkit 1.0.2
solar_iconkit: ^1.0.2 copied to clipboard
Solar icon kit for Flutter. 1,231 icons in 6 native styles — linear, outline, broken, bold, line-duotone, bold-duotone — behind a single SolarIcon widget.
Changelog #
All notable changes to this package are documented here. The format loosely follows Keep a Changelog, and the package uses Semantic Versioning.
1.0.2 — 2026-07-29 #
Added #
- Debug-mode validation for icon names.
SolarIcon('typo-name')now throws a detailed [FlutterError] in debug builds instead of silently rendering an empty box. The assertion is stripped from release builds (zero production cost). Typos surface immediately during development with a stack trace pointing to the offending call site and a hint to use theSolarIcons.<name>constants.
Changed #
- SVG assets minified further via SVGO. All 7,386 SVGs were run
through SVGO with a conservative config (preserves
currentColor,viewBox, duotone opacities, and gradient ids). Savings were modest (~0.7%) — Solar's upstream SVGs were already well-optimised — but it's a free win with no visible change to rendering. Golden tests still match. - README bundle-size figures corrected. Earlier releases quoted
"23 MB uncompressed" — that number came from
du -shreporting filesystem block-allocation slack (each ~500-byte SVG rounds up to a 4 KB block). The actual on-wire SVG content is 6.1 MB. The README now reports the accurate number and explains the discrepancy.
Tests #
- New test verifying the unknown-icon assertion throws a
FlutterErrorwhose message includes the offending name. Total tests: 34 (up from 33) + 6 goldens.
1.0.1 — 2026-07-29 #
Quality release — no API changes, no behavioural changes. Consumers of 1.0.0 can upgrade with zero migration effort.
Added #
- Codecov integration. Every CI run uploads
lcov.infoto Codecov; the coverage badge is live on the README. Coverage onlib/is now 100% (generated.g.dartfiles excluded, percodecov.yml). - Coverage gates. New
codecov.ymlsets a 90% project baseline and an 80% patch baseline. PRs that drop coverage below these thresholds are flagged automatically. debugFillPropertiestest. One new widget test constructs aSolarIconwith every parameter non-default and asserts each is reported in the Flutter DevTools diagnostics dump. Brings total test count to 33 + 6 goldens.
Changed #
- CI workflow passes
CODECOV_TOKENexplicitly tocodecov-action@v5for faster and more reliable coverage ingestion.
1.0.0 — 2026-07-29 #
🎉 First stable release.
solar_iconkit is now API-stable and production-endorsed. The 1.0 line
commits to backwards compatibility — future 1.x releases will only add
optional parameters or fix bugs. Breaking changes will bump to 2.0.
Highlights from the 0.x → 1.0 journey #
- 1,231 Solar icons across 6 native styles (7,386 SVG variants) —
behind a single, type-safe
SolarIconwidget. - 160/160 pub.dev score across all five evaluation categories.
- 32 tests + 6 golden files covering widget behaviour, IconTheme integration, RTL mirroring, opacity composition, blendMode, shadows, and visual regression on all six styles.
- Cross-platform CI on Ubuntu, macOS, and Windows, plus a dedicated Ubuntu job on the declared minimum Flutter 3.27.0.
- Zero deprecated API use — modern
Color.withValues(alpha:)for opacity composition,Directionality.offor RTL,IconTheme.offor ambient theme integration. - Strict analyzer —
strict-casts,strict-inference, andstrict-raw-typesall enabled, plus 11 additional lint rules. - Full community-standards compliance:
CONTRIBUTING.md,CODE_OF_CONDUCT.md,SECURITY.md, issue templates, PR template, Dependabot, FUNDING. - Branch protection on
main— all four CI matrix jobs must pass before merge.
Since 0.4.0 #
- Analyzer strictness bumped — 11 additional lint rules and full strict-type-checking. Codebase already compliant; no user-visible changes.
- Coverage tracked via Codecov — every push and PR uploads
lcov.infofrom the min-Flutter CI job. Coverage badge in the README. - Branch protection on
main— the four CI matrix jobs are required status checks. Force-push and deletion blocked. - Version references bumped throughout the docs to
^1.0.0.
Roadmap toward 2.0 #
- Per-style sub-packages (
solar_iconkit_linear,solar_iconkit_bold_duotone, etc.) for consumers who only need a subset of styles. Would cut typical bundle size from 23 MB to ~4 MB. - Icon-font distribution as an alternative to SVG for consumers who prioritise bundle size over duotone rendering.
0.4.0 — 2026-07-29 #
Added #
-
SolarIcon.blendModeparameter (defaults toBlendMode.srcIn). Lets advanced consumers customise how the icon's color composites onto the background — for exampleBlendMode.multiplyfor icon-over-texture effects, orBlendMode.dstto render the SVG in its native colors. -
SolarIcon.shadowsparameter — aList<Shadow>?. Mirrors theshadowsparameter on Flutter's built-inIconwidget. When non-empty, blurred and offset copies of the icon are painted behind the main render.SolarIcon( SolarIcons.heart, style: SolarIconStyle.bold, color: Colors.red, shadows: const [ Shadow(color: Colors.black26, blurRadius: 6, offset: Offset(0, 2)), ], ) -
Golden tests covering all six styles.
test/golden_test.dartrendersSolarIcons.home2per style and compares against reference PNGs intest/goldens/. Catches visual regressions caused byflutter_svgupgrades or widget-layout changes. -
Cross-platform CI. The workflow now runs a matrix on Ubuntu, Windows, and macOS against the current Flutter stable channel, plus a dedicated Ubuntu job on the declared minimum Flutter 3.27.0. Golden tests are gated to Ubuntu only via the
goldentest tag (dart_test.yaml) — pixel-level rasterization can differ across platforms. -
Format enforcement in CI.
dart format --set-exit-if-changedruns as part of the min-flutter job. Codebase is now fully dart-formatted.
Changed #
- Test count 24 → 32. Two new widget tests (
blendMode,shadows) plus six golden tests. debugFillPropertiesnow reportsblendModeandshadowsso they show up in Flutter DevTools.
Notes #
- No breaking changes. Both new parameters are optional and default to the pre-existing behaviour (srcIn blend, no shadows).
0.3.3 — 2026-07-29 #
Added #
- pub.dev screenshots. Three screenshots are now shipped in the package
and rendered on the pub.dev landing page:
browser-grid.png— the interactive icon browser with sidebar, style chips, and icon grid.style-comparison.png— the detail dialog showing an icon in all six native styles, hero preview, "Preview in context", and Copy tab.widget-in-app.png— the "Preview in context" strip demonstrating SolarIcon in menu, sidebar, button, and toolbar UI patterns.
- Capture script.
screenshots/capture.mjsuses Playwright to regenerate all three PNGs from the live icon browser (https://solar-icons-web.vercel.app) — makes future re-captures a one-command operation.
0.3.2 — 2026-07-29 #
Added #
- Community health files. Added
CONTRIBUTING.md,CODE_OF_CONDUCT.md(Contributor Covenant 2.1),SECURITY.md(with GitHub private vulnerability reporting), issue templates (bug report + feature request), pull request template, and.github/FUNDING.yml. GitHub's community-standards score moves from 0/7 to 7/7. - Dependabot.
.github/dependabot.ymlopens weekly PRs for pub dependencies and GitHub Actions versions. - RTL and opacity tests. Three new widget tests covering
matchTextDirectionunderDirectionality.rtl, explicittextDirectionoverride, and composition of widget-levelopacitywithIconTheme.opacity. Total test count is now 24 (up from 21). - Screenshots scaffold.
screenshots/README.mddocuments which visuals to capture for pub.dev; a commentedscreenshots:block inpubspec.yamlis ready to activate once the PNGs are in place.
Changed #
flutter_lintsbumped^5.0.0 → ^6.0.0. Picks up the latest Dart lint rules. No new warnings surfaced by the upgrade.- Example app cleanup. Replaced 8 remaining
Color.withOpacity(...)calls withColor.withValues(alpha: ...)(Flutter 3.27+ API). Appliedconstwhere the analyzer suggested.flutter analyzenow reports zero issues acrosslib/,test/, andexample/.
0.3.1 — 2026-07-29 #
Changed #
- LICENSE cleanup. The bundled Solar attribution has been moved to a new
top-level
NOTICEfile soLICENSEis now a clean, unaltered MIT template.licensee/pub.dev can now confidently detect the license — the pub.dev license status will resolve from "pending" to "MIT".
Added #
- Continuous integration. A GitHub Actions workflow at
.github/workflows/ci.ymlrunsflutter analyzeandflutter teston every push and pull request, against Flutter 3.27.0 (the minimum declared inpubspec.yaml) and the current stable channel. Status badge added to the README. - Bundle-size roadmap. The "Reducing bundle size" section in the README
now explicitly documents the 23 MB / 4–5 MB gzipped footprint, the
per-style trimming workflow (fork + edit
pubspec.yaml), and flags per-icon tree-shaking viabuild_runneras the direction forv1.0.
0.3.0 — 2026-07-29 #
Added #
- Icon browser website — https://solar-icons-web.vercel.app is now the
primary place to preview icons, pick a style, and copy Flutter widget code
for any icon in the set. Referenced throughout the README and set as the
package
homepage. - Sponsorship link — Ko-fi funding URL declared in
pubspec.yamlunder thefundingfield (pub.dev renders a "Sponsor" button pointing to https://ko-fi.com/sovanken). README now includes a short "Support" section.
Changed #
- README trimmed to five essential badges (pub version, pub points, Flutter, license, Ko-fi) — the badge cluster is easier to read and each badge now communicates something distinct.
- External links to the Solar collection page were replaced with links to the new browser website so readers land on an interactive preview instead of an outdated third-party listing.
- Package
homepagenow points at the icon browser (https://solar-icons-web.vercel.app) rather than pub.dev — pub.dev already links to itself.
Removed #
- README sections that documented the internal regeneration script have been
removed. The script is still shipped for maintainers under
tool/, but it is not part of the public API and no longer surfaces in the readme, troubleshooting, or requirements sections.
0.2.0 — 2026-07-28 #
Added #
- Dartdoc comment on every
SolarIcons.<name>constant (1,231 total). Raises pub.dev "Provide documentation" from 10 % to ~98 % coverage. - Dartdoc comments on every
SolarIconStyleenum value, describing the visual character of each of the six styles.
Changed #
- Breaking: minimum Flutter bumped from
3.24.0to3.27.0(Dart 3.6+). This lets the widget use the modern non-deprecated color API. - Opacity composition now uses
Color.withValues(alpha: ...)(Flutter 3.27+) instead of the deprecated.alpha,.red,.green,.bluecomponent getters. Fixes the pub.dev static-analysis warnings about deprecated members inlib/src/solar_icon.dart. - Fetcher generator (
tool/fetch_icons.py) now emits/// Solar icon \X`.` before each constant, so future regenerations preserve the documentation.
Fixed #
- pub.dev score raised from 140/160 to an expected 160/160 (documentation and static analysis categories both at max).
0.1.0 — 2026-07-28 #
Initial public release.
Widget #
SolarIconwidget with aconstconstructor and 11 parameters:name,style,size,color,opacity,semanticLabel,textDirection,matchTextDirection,fit,alignment, andkey.- Full
IconTheme.of(context)integration —size,color, andopacityresolve from the ambient theme when unset on the widget, matching the behaviour of Flutter's built-inIcon. - Decorative icons (no
semanticLabel) are wrapped inExcludeSemanticsso screen readers skip them cleanly. - Strict layout box via
SizedBox.square— icons never overflow their parent. debugFillPropertiesfor Flutter DevTools inspection.- Static helpers:
SolarIcon.assetPath(name, style)andSolarIcon.packageName. - Cross-version alpha computation via
Color.fromARGB— no dependency onwithOpacity(deprecated) orwithValues(unavailable pre-3.27).
Styles #
SolarIconStyleenum with six native Solar styles:linear,outline,broken,bold,lineDuotone,boldDuotone.
Catalog #
SolarIconsclass with 1,231 generated string constants — one per Solar base icon — and an alphabetically sortedalllist.- Identifier naming rules: kebab-case to camelCase, leading digits prefixed
with
i, Dart reserved words suffixed withIcon, collisions resolved with numeric suffixes.
Assets #
- 7,386 SVG assets bundled across 6 style folders under
assets/icons/. - Assets declared in
pubspec.yamlunder theflutter.assetskey; consumers do not need to declare anything.
Tooling #
- Python 3 regeneration script at
tools/fetch_icons.pythat pulls the latest Solar icons from the Iconify API, writes SVGs intoassets/icons/{style}/, and regenerateslib/src/solar_iconkit_data.g.dart.
Testing #
- Widget and unit tests covering: default rendering, explicit props,
IconThemeinheritance,ExcludeSemanticswrapping, opacity assertions,assetPathresolution, catalog invariants (sortedness, uniqueness, identifier grammar), and reserved-word renames.
Documentation #
- Comprehensive
README.mdcovering installation (pub.dev + path + git + overrides), API reference, style guide, recipes for common Flutter widgets, advanced patterns, performance guarantees, and troubleshooting. - Dartdoc comments on every public class, member, and enum value.
PUBLISHING.mdmaintainer guide with release workflow.example/Flutter app browses every icon in every style with search and size controls.
Platform support #
Android, iOS, macOS, Windows, Linux, Web — every platform supported by
flutter_svg.