s_packages 3.1.0
s_packages: ^3.1.0 copied to clipboard
A unified Flutter package which gathers multiple widgets and tools.
3.1.0 #
s_ink_buttonsplash animation enhancement:- Updated splash rendering to a radial-gradient style so the splash is no longer a flat filled circle.
- Added a soft fade in the splash interior (center) for a cleaner ink effect.
- Added a smooth fade on the outer splash edge (border) for more natural ripple falloff.
- Affected sub-packages using
SInkButton:pop_overlay,s_button,s_expendable_menu,s_modal,s_time,week_calendar.
3.0.2 #
-
s_webviewproxy HTML normalization refactor:- Extracted new
SWebViewProxyHtmlUtilsutility class (_proxy_html_utils.dart) to centralize proxy response handling. normalizeProxyHtml()— unwraps known JSON envelopes (e.g. allorigins{ contents: ... }), decodes HTML entities (including doubly-escaped payloads like&lt;html...), strips wrapping quotes, and handles URL-encoded HTML.injectBaseTagIfMissing()— safely injects<base href="...">into the<head>(or prepends it) when none is present, with proper fragment stripping from the base URL.looksLikeHtml()— best-effort HTML-detection heuristic.- Refactored
_SWebViewStateto useSWebViewProxyHtmlUtilsinstead of inline proxy response / base-tag injection logic. - Added unit tests for
SWebViewProxyHtmlUtils(JSON envelope unwrap, double-entity decoding, base tag injection/deduplication).
- Extracted new
-
Example app updates:
- Expanded webview example screen with many more test-URL buttons in a horizontally scrollable row.
- Added basic widget test (
example/test/widget_test.dart).
3.0.1 #
s_webviewfix: restoredwebview_flutter_webdependency that was accidentally removed in 3.0.0, causing URL loading to fail on web platform (no web platform backend registered).
3.0.0 #
- Dependency unbloat (BREAKING): removed convenience-only third-party dependencies that were not required by core
s_packageswidgets/controllers.- Removed from
dependencies:overlay_support,email_validator,regexed_validator,strings,cryptography,roundcheckbox,swipeable_tile,toastification,sync_scroll_controller,animated_list_plus,google_fonts,simple_animations.
- Removed from
- API surface cleanup (BREAKING):
s_packages.dartno longer exportss_packages_extra1.dartby default. - Legacy convenience barrels slimmed:
s_packages_extra1.dartands_packages_extra2.dartnow expose only lightweight/foundational exports and are no longer intended as "install-everything" shortcuts. - Migration note: apps needing removed third-party packages should add them directly in their own
pubspec.yaml.
2.1.1 #
s_modalsub-package improvements:- Removed idempotent guard in
Modal.appBuilder(): Previously, callingappBuildermore than once (e.g. during hot reload) would skip reinstallation to avoid double-nesting_ActivatorWidget. This guard has been removed so thatappBuilderalways installs a fresh activator widget, fixing cases where hot reload could leave the modal system in a stale state. - Code formatting: Applied Dart formatter across the file for consistency.
- Removed idempotent guard in
2.1.0 #
s_modalsub-package improvements:- Synchronized Barrier & Modal Dismissal: The background barrier now fades out in perfect sync with the modal content (Dialogs, BottomSheets, Snackbars). No more lingering barriers or premature disappearances.
- Snappier Animations: Reduced exit animation durations from ~300-400ms to 200ms for a faster, more responsive UI feel.
- Cleanup & Fixes:
- Fixed an issue where the snackbar barrier was not fading out correctly.
- Updated internal logic to wait exactly for the animation duration (200ms) before disposing of the modal controller, preventing race conditions or UI lag.
2.0.0 #
-
pop_overlaysub-package improvements:- Improved overlay bootstrap resolution to prefer the nearest overlay context before falling back to the root overlay.
- Fixed popup positioning for framed/scaled layouts (notably web) by keeping overlays in the same coordinate space as the caller.
-
s_offstagesub-package improvements:- Removed the internal
Sizerwrapper fromSOffstageto avoid forcing an extra layout context around the widget tree. - Improved scale-only transitions: hidden state now scales to
0.0(instead of0.97) for a cleaner and fully smooth disappearance at animation end. - Updated inline documentation examples to use
SOffstagenaming consistently.
- Removed the internal
-
Example app update:
ForcePhoneSizeOnWebnow uses an explicit size (2048 x 2732) inexample/lib/main.dartfor improved demo consistency.
-
Package metadata:
- Bumped package version to
2.0.0and updated README installation snippet accordingly.
- Bumped package version to
1.9.0 #
-
s_webviewmajor upgrade:- Added typed config API with
SWebViewConfig(auto restriction detection, proxy list fallback, host-based cache option, cache TTL, known restricted domains). - Added external controller injection support via
SWebView(controller: ...)with safe ownership/disposal behavior. - Added richer callbacks:
onProgress,onPageStarted,onPageFinished,onUrlChanged,onNavigationRequest,onJavaScriptMessage. - Added navigation decision model (
SWebViewNavigationDecision) and callback type (SWebViewNavigationRequestCallback) to allow/prevent navigation. - Added platform capability model (
SWebViewPlatformCapabilities) on controller.
- Added typed config API with
-
s_webviewbehavior and reliability improvements:- Removed hardcoded navigation blocking and replaced it with callback-driven policy.
- Upgraded JS result handling to use
runJavaScriptReturningResult(...)for title/cookies/search metadata paths. - Reworked web proxy cache with persisted timestamped entries, TTL validation, stale entry invalidation, and backward compatibility for old bool cache format.
- Improved restriction detection using known-domain checks plus header/content hints (
X-Frame-Options, CSPframe-ancestors, body hints). - Added idempotent/concurrency-safe controller initialization to prevent repeated-init crashes (including
LateInitializationErroron reused controllers). - Updated controller navigation helpers to use unified
loadUri(...)flow and aligned desktop support documentation.
-
s_webviewAPI cleanup and internals:- Exported advanced controller extensions from
webview_controller.dart. - Removed duplicate legacy file
webview_controller_clean.dart. - Added shared internal debug logger
_debug_log.dartand routed platform/desktop logs through it. - Added optional pointer-event blocking overlay support to internal WebView widget (
ignorePointerEvents).
- Exported advanced controller extensions from
-
Example app updates (
s_webview_example_screen):- Updated demo to showcase injected controller, typed config, progress/url callbacks, JS message callback, and navigation decision policy toggle.
- Added richer live UI state (progress bar, last seen URL, policy feedback, JS message panel).
1.8.1 #
- CHANGELOG and README updated
1.8.0 #
-
soundsliced_dart_extensionsnew utilities added:- Iterable/List helpers:
none,countWhere,singleWhereOrNull,distinctBy,sortedBy,chunked,windowed,firstWhereOrNull,lastWhereOrNull,firstOrNull,lastOrNull,elementAtOrNull. - Map helpers:
mapKeys,mapValues,filterKeys,filterValues, plus typed accessorsgetString,getIntOrNull,getDoubleOrNull,getBoolOrNull. - String helpers:
isBlank,ifBlank,toIntOrNull,toDoubleOrNull,toTitleCase,removeDiacritics. - Duration helpers:
formatCompactDuration()andtoClockString(). - Date/num helpers:
DateTime.clampTo(...),num?.clampOrNull(...), andnum?.clampToDoubleOrNull(...). - Marked legacy
MyStringExtension.convertStringIntoStringList()as deprecated in favor ofStringExtensions.convertToListString()and the top-level helper.
- Iterable/List helpers:
-
soundsliced_dart_extensionsextension deduplication (BREAKING):- Removed overlapping extensions already provided by exported
nb_utilsto prevent ambiguous extension resolution. - Removed
DateTimemembers from this subpackage:isToday,isYesterday,isTomorrow,isSameDay,startOfDay,endOfDay. - Removed overlapping
Stringmembers from this subpackage:toCamelCase,toSnakeCase. - Removed overlapping
intduration members from this subpackage:seconds,minutes,hours,microseconds. - Migration guidance:
- Use
nb_utilsequivalents for removed overlapping APIs (available transitively vias_packages). - For
intdurations, prefer retained short-hands from this subpackage where desired:sec,min,hr,micSec.
- Use
- Removed overlapping extensions already provided by exported
-
s_packagesexport changes:- Exported
nb_utilsdirectly froms_packages.dart. - Removed duplicate
nb_utilsexport froms_packages_extra1.dart.
- Exported
1.7.2 #
s_metarsub-package improvements:- NEW: Live METAR/TAF fetching:
- Added
MetarTafFetcherclass for fetching live weather data from aviationweather.gov API - Added
MetarTafResultclass for typed fetch results with parsedMetar/Tafobjects and raw data - ICAO code validation: ensures 4-character codes (first char letter, rest alphanumeric) via
isValidIcao() - DateTime validation: rejects future dates and returns descriptive error
- Integration with
s_clientAPI for HTTP requests with automatic retry and error handling
- Added
- CORS proxy support for web builds:
proxyUrlsstatic list for configurable proxy URLs (default: two Cloudflare Workers for redundancy)customProxyUrlsparameter onfetch()for per-request proxy override- Automatic proxy fallback: tries each proxy in order, switches on rate limit (429/503 status codes)
- Direct API fallback when all proxies fail
- Deployment resources:
- Cloudflare Worker implementation in
lib/s_metar/deployment/cloudflare-worker.js - Vercel Edge Function implementation in
lib/s_metar/deployment/vercel-edge-function.js - Comprehensive deployment guide in
lib/s_metar/deployment/README.md - Usage examples in
lib/s_metar/deployment/USAGE_EXAMPLES.dart
- Cloudflare Worker implementation in
- Example app integration:
- Added interactive
s_metarexample screen with 3-tab interface:- METAR tab: preset samples (EGLL, KJFK, Winter, CAVOK) + custom input with live parsing
- TAF tab: editable TAF code with live parsing
- Live Fetch tab: ICAO input, date/time picker, and real-time API fetching
- Expandable cards showing parsed weather data (wind, visibility, clouds, temperatures, pressure)
- Registered in package examples registry under "Networking" category
- Added interactive
- NEW: Live METAR/TAF fetching:
1.7.1 #
s_metarbug fixes:- Fixed
toString()inDistance,Pressure,Temperature(base),MetarTrendIndicator, andTafTemperature—${super}in string interpolation was invokingObject.toString()on the superclass proxy, returning the runtime type string (e.g."Instance of 'Numeric'") instead of the formatted value; changed to${super.toString()}throughout
- Fixed
1.7.0 #
- NEW
s_metarsub-package added:- METAR parsing: Full support for aviation routine weather reports with
Metar(String code)constructor - TAF parsing: Terminal Aerodrome Forecast support with
Taf(String code)constructor - Wind data:
- Speed in multiple units: knots, m/s, km/h, mph via
speedInKnot,speedInMps,speedInKph,speedInMiph - Gust speed in same units via
gustInKnot,gustInMps,gustInKph,gustInMiph - Direction in degrees and cardinal direction (N, NE, E, etc.)
- Wind variation range (from/to degrees)
- Beaufort scale number (0-12) and description via
beaufortandbeaufortDescription isCalmboolean flag for calm wind conditions (00000KT)
- Speed in multiple units: knots, m/s, km/h, mph via
- Visibility:
- Prevailing and minimum visibility in meters, kilometers, sea miles, and feet
isMaximumflag for visibility ≥10 km- CAVOK detection
- Weather phenomena:
- Intensity, descriptor, precipitation, obscuration, and other phenomena
precipitationCodeslist for compound weather (e.g., RASN → ['RA', 'SN'])- Recent weather parsing
- Cloud layers:
- Cover amount with ICAO code (
coverCode: FEW/SCT/BKN/OVC/NSC) and translation - Height in feet, meters, and kilometers
- Cloud type codes (CB, TCU) with
cloudTypeCodeandcloudType - Oktas (eighths of sky coverage)
ceilingproperty (true when ≤1500 ft and BKN/OVC)
- Cover amount with ICAO code (
- Temperature data:
- Temperature and dewpoint in Celsius, Fahrenheit, Kelvin, and Rankine
- Derived meteorological quantities:
relativeHumiditypercentagedewpointSpreadin °CheatIndexin °C (valid when temp ≥27°C and RH ≥40%)windChill(double? windSpeedKph)in °C (valid when temp ≤10°C and wind ≥4.8 km/h)
- Pressure:
- Support for 7 units: hPa, inHg, mbar, Pa, kPa, bar, atm via
inHPa,inInHg,inMbar,inPa,inKPa,inBar,inAtm
- Support for 7 units: hPa, inHg, mbar, Pa, kPa, bar, atm via
- Flight rules: Automatic VFR/MVFR/IFR/LIFR/VLIFR classification via
flightRulesproperty - CAVOK validation:
shouldBeCavok()method checks if conditions meet CAVOK criteria - Additional METAR fields: Runway visual range (RVR), windshear, sea state, runway state, weather trends (TEMPO/BECMG)
- TAF features: Valid period, change indicators (FM/TEMPO/BECMG/PROB), max/min temperature forecasts, change period details
- Serialization:
asMap()method for JSON-serializable output - GroupList utilities:
asList()method for converting group lists (clouds, weather, etc.) toList<Map<String, Object?>> - Flexible parsing: Optional
yearandmonthparameters for accurate timestamp resolution,truncateoption for remark handling - Unparsed groups tracking:
unparsedGroupsproperty lists any METAR/TAF groups that weren't recognized
- METAR parsing: Full support for aviation routine weather reports with
1.6.0 #
s_screenshotsub-package performance improvements:- Fixed
ui.Imagememory leak — native GPU resources are now properly disposed after byte extraction - Base64 encoding is now offloaded to a separate isolate via
compute()on native platforms to avoid blocking the UI thread (falls back to main thread on web where isolates aren't available) - Replaced
Future.microtask(() {})withWidgetsBinding.instance.endOfFramefor more reliable rendering pipeline synchronization - Fixed
ByteDatabuffer view to use preciseoffsetInBytes/lengthInBytesinstead of unboundedasUint8List() - Added
_chunkedBase64Encode()method for chunked base64 encoding on web — processes in 192KB chunks with event loop yields to keep animations running
- Fixed
1.5.3 #
s_clientsub-package improvements:- Stripped Dio
BaseOptionsdown to onlybaseUrlandvalidateStatus— all other configuration (connectTimeout,receiveTimeout,sendTimeout,headers,followRedirects,maxRedirects) is now applied per-request viadio.Options, avoiding web-specific XHR issues (e.g.connectTimeoutsettingxhr.timeout, defaultContent-Typetriggering CORS preflights) connectTimeoutandsendTimeoutare now forwarded to every_perform*method (GET, POST, PUT, PATCH, DELETE, HEAD, download, downloadToFile, uploadFile) — previously onlyreceiveTimeoutwas passed through- Explicitly forwarded
Content-Typefrom request headers todio.Options.contentTypein POST, PUT, and PATCH — ensures Dio's request transformer uses the correct encoder (e.g. form-urlencoded vs JSON) regardless ofBaseOptionsdefaults - Changed
ClientConfig.connectTimeout,receiveTimeout, andsendTimeoutdefaults fromDuration(seconds: 30)tonull(no timeout) - Added
_withTimeout<T>()helper — applies.timeout()only when the duration is non-null, replacing all inline.timeout()calls onhttppackage requests - Applied
maxRedirectsguard (config.followRedirects ? config.maxRedirects : null) consistently to PATCH, DELETE, HEAD, download, downloadToFile, and uploadFile — these methods were previously passingconfig.maxRedirectsunconditionally
- Stripped Dio
1.5.2 #
s_clientsub-package improvements:- Added
autoRedirectStatusCodesparameter toput(),putJson(), and_performPut()— enables manual redirect handling for PUT, POST requests, automatically following theLocationheader with a GET request when the response status code matches (consistent with existing POST redirect behavior) - Fixed
maxRedirectsguard in_performPut()— now only set whenfollowRedirectsis enabled (matching POST behavior)
- Added
1.5.1 #
s_clientsub-package fixes:- Fixed Dio redirect option handling by only setting
maxRedirectswhenfollowRedirectsis enabled - Applied this fix consistently to base Dio options and per-request Dio options in GET and POST flows
- Fixed Dio redirect option handling by only setting
1.5.0 #
s_clientsub-package improvements:- Added
validateStatusparameter (bool Function(int?)?) to all HTTP methods (get,getJson,getJsonList,post,postJson,put,putJson,patch,patchJson,delete,deleteJson,head,download,downloadToFile,uploadFile) — allows per-request control over which status codes are treated as valid - Fixed Dio request options:
followRedirects,maxRedirects, andvalidateStatusare now correctly forwarded to all_perform*methods — previously onlyreceiveTimeoutandheaderswere passed through - flutter/Dart SDKs updated
- Added
1.4.2 #
s_modalsub-package improvements: — Added_appBuilderInstalled = falsein bothdisposeActivator()and_ActivatorWidgetState.dispose(). Without this, after the first test tears down its widget tree, subsequent tests'Modal.appBuildercalls skip creating the_ActivatorWidget, so modals never render.
1.4.1 #
s_connectivitysub-package BREAKING improvements:- BREAKING: Renamed
AppInternetConnectivityclass toSConnectivity— all call sites must be updated (e.g.AppInternetConnectivity.listenable→SConnectivity.listenable) - BREAKING: Renamed source file from
s_connection.darttos_connectivity.dart— direct imports must be updated - Made
toggleConnectivitySnackbar()private (_toggleConnectivitySnackbar) — use theshowNoInternetSnackbarsetter instead for manual snackbar control
- BREAKING: Renamed
1.4.0 #
s_modalsub-package improvements:- Added
Modal.isAppBuilderInstalledpublic getter — allows other packages to check whetherModal.appBuilderhas already been installed in the widget tree - Made
Modal.appBuilderidempotent — calling it more than once now safely returns the child as-is instead of double-nesting the internal_ActivatorWidget
- Added
s_connectivitysub-package improvements:- Added
SConnectivityOverlaywidget — a convenience wrapper that sets up the Modal overlay system so the "No Internet" snackbar works without requiring users to know about or manually callModal.appBuilder - Added
SConnectivityOverlay.appBuilderstatic method — drop-in replacement forModal.appBuilderthat can be passed directly toMaterialApp(builder: ...) - Safe to use alongside an existing
Modal.appBuildercall — double-wrapping is prevented automatically thanks to the idempotentappBuilder
- Added
1.3.0 #
pop_overlaysub-package improvements:PopOverlay.dismissAllPopsadded with optionalincludeInvisibleandexceptparametersPopOverlay.replacePopfor atomically replacing an overlay with a new one- Added query helpers:
isVisibleById,getVisiblePops,getInvisiblePops,visibleCount,invisibleCount - Added
shouldDismissOnEscapeKeyflag onPopOverlayContentto opt out of Escape key dismissal per overlay - Added
onMadeVisiblecallback onPopOverlayContent(counterpart toonMadeInvisible) - Added
onDragStartandonDragEndcallbacks onPopOverlayContent - Added
dragBoundsonPopOverlayContentto constrain dragging within aRect FrameDesignadditions:subtitleproperty for secondary text below the titletitleBarColorandbottomBarColorfor per-popup color customizationheaderTrailingWidgetsfor extra action widgets in the header
bubble_labelsub-package improvements:- Added
animationDurationfor custom show/dismiss timing - Added
showCurveanddismissCurvefor independent animation curves - Added
horizontalOffsetfor horizontal positioning control - Added
showOnHoverflag to trigger label display on mouse hover
- Added
s_bounceablesub-package improvements:- Added
onLongPresscallback - Added
curvefor custom bounce animation curve - Added
enableHapticFeedbackflag for tactile feedback on tap
- Added
s_disabledsub-package improvements:- Added
applyGrayscaleflag to apply a grayscale filter when disabled - Added
disabledSemanticLabelfor custom accessibility label when disabled - Added
disabledChildto show an alternative widget when disabled
- Added
s_bannersub-package improvements:- Added
onTapcallback - Added
gradientfor gradient background support - Added
animateVisibilityto animate show/hide transitions
- Added
s_glowsub-package improvements:- Added
onAnimationCompletecallback to Glow1 and Glow2 - Added
gradientsupport for multi-color glow effects in Glow1
- Added
shakersub-package improvements:- Added
ShakeControllerfor programmatic shake triggering viacontroller.shake()
- Added
s_maintenance_buttonsub-package improvements:- Added
iconfor custom button icon - Added
showConfirmationflag andconfirmationMessagefor confirmation dialog before action
- Added
s_ink_buttonsub-package improvements:- Added
onHoverandonFocusChangecallbacks - Added
hoverColorfor custom hover state color - Added
splashDurationfor custom splash animation timing
- Added
settings_itemsub-package improvements:- Added
subtitle,description, andtrailingtoExpandableParameters - Updated
copyWith,==, andhashCodeaccordingly
- Added
s_error_widgetsub-package improvements:- Converted to
StatefulWidgetfor expandable stack trace state - Added
errorCode,stackTrace(expandable monospace view),showCopyButton, andactions - Copy button copies full error details to clipboard
- Converted to
keystroke_listenersub-package improvements:- Added
actionHandlersmap for customizable intent callbacks per intent type
- Added
s_context_menusub-package improvements:- Added
disabledandshortcutHintfields toSContextMenuItem - Disabled items render at reduced opacity with forbidden cursor
- Shortcut hints display as right-aligned secondary text in menu items
- Added
s_animated_tabssub-package improvements:- Added
tabIconslist for optional per-tab icons - Added
tabBadgeslist for optional per-tab badge pills
- Added
s_expendable_menusub-package improvements:- Added
onExpansionChangedcallback toSExpandableMenu - Added
tooltipanddisabledfields toSExpandableItem - Disabled items render at reduced opacity with null tap handler
- Added
s_future_buttonsub-package improvements:- Added
successDurationanderrorDurationfor configurable state display timing - Added
loadingWidgetfor custom loading indicator replacement
- Added
s_gridviewsub-package improvements:- Added
emptyStateWidgetto display when children list is empty
- Added
ticker_free_circular_progress_indicatorsub-package improvements:- Added
sizeparameter (replaces hardcoded 36.0 diameter)
- Added
soundsliced_tween_animation_buildersub-package improvements:- Added
delayfor pre-animation delay - Added
repeatCountto limit number of auto-repeat cycles
- Added
week_calendarsub-package improvements:- Added
minDateandmaxDatefor date boundary constraints - Added
eventIndicatorDatesandeventIndicatorColorfor event dot indicators on days
- Added
s_clientsub-package improvements:- Added
putJson<T>()typed variant for PUT requests with JSON deserialization - Added
patchJson<T>()typed variant for PATCH requests with JSON deserialization - Added
deleteJson<T>()typed variant for DELETE requests with JSON deserialization
- Added
soundsliced_dart_extensionssub-package improvements:- Added
String.truncate(maxLength, {ellipsis})extension - Added
List<T>.groupBy<K>(keyOf)extension for grouping elements by key
- Added
s_liquid_pull_to_refreshsub-package improvements:- Added
triggerDistancefor customizable drag threshold - Added
onDragProgresscallback reporting drag progress (0.0 to 1.0)
- Added
s_screenshotsub-package performance improvements:- Fixed
ui.Imagememory leak — native GPU resources are now properly disposed after byte extraction - Base64 encoding is now offloaded to a separate isolate via
compute()on native platforms to avoid blocking the UI thread (falls back to main thread on web where isolates aren't available) - Replaced
Future.microtask(() {})withWidgetsBinding.instance.endOfFramefor more reliable rendering pipeline synchronization - Fixed
ByteDatabuffer view to use preciseoffsetInBytes/lengthInBytesinstead of unboundedasUint8List()
- Fixed
s_connectivitysub-package improvements:- BREAKING: Removed
NoInternetConnectionPopupwidget; connectivity warnings now use the Modal snackbar system - Added
showNoInternetSnackbarstatic property to auto-show/dismiss a staggered snackbar on connectivity changes - Added
noInternetSnackbarMessageparameter toinitialiseInternetConnectivityListener()for custom messages - Added
toggleConnectivitySnackbar()static method for manual snackbar control - Removed dependencies on
assorted_layout_widgetsandsizer
- BREAKING: Removed
s_modalsub-package improvements:- BREAKING: Renamed
showSuffixIconparameter toshowCloseIconinModal.showSnackbar() - Replaced barrier
SBounceablewithSInkButtonfor ink-splash feedback and long-press dismiss support - Improved snackbar default layout: text uses
Flexibleinstead ofExpanded, consistent spacing/alignment
- BREAKING: Renamed
signals_watchsub-package improvements:- Metadata is now always stored for signals created via
SignalsWatch.signal(), ensuring.reset()works even without lifecycle callbacks onValueUpdatedcallback now supports zero-parameter signatures (fallback invocation if one-parameter call fails)
- Metadata is now always stored for signals created via
1.2.7 #
s_sidebarsub-package improvements:- Enhanced
SideBarController.activateSideBarwith additional customization options:- Added
dismissBarrierColorparameter for custom barrier colors - Added
shouldBlurDismissBarrierparameter for optional blur effect on barrier - Added
initStatecallback for initialization logic - Added
onDismissedcallback to handle sidebar dismissal events
- Added
- Enhanced
1.2.6 #
pop_overlaysub-package animation improvements:- Added smooth fade-in animations to all popup types; fixes flash issue in
FrameDesignpopups by smoothly animating appearance during auto dynamic dimension calculation time - Extended animation durations for smoother transitions: blur background (400ms → 600ms), barrier fade (0.4-0.5s → 0.8-1.0s), and animated size (300ms → 500ms)
- Added
borderRadiussupport to example demos for better visual consistency - Optimized popup entrance animations with
Curves.fastEaseInToSlowEaseOutfor more natural motion
- Added smooth fade-in animations to all popup types; fixes flash issue in
1.2.5 #
pop_overlaysub-package improvements:- Replaced
pop_overlay's use ofMediaQuery.of(context).sizewithSize(100.w, 100.h)for better responsive sizing using thesizerpackage throughout the overlay system - Improved cross-platform compatibility and responsive behavior
- Replaced
- Example app enhancements:
- Wrapped
MaterialAppwithForcePhoneSizeOnWebfor better web demo experience with consistent phone-sized viewport - Added comprehensive Pop Overlay Demo section in
s_widgets_example_screen.dartshowcasing draggable popup with blur effects, custom styling, and interactive features
- Wrapped
1.2.4 #
s_sidebar&pop_overlaysub-packages upgrades:s_sidebar: Added default left alignment for sidebar activation, allowing the sidebar to stay anchored to the left while minimizing.pop_overlay: Addedalignmentproperty toPopOverlayContent(defaulting toAlignment.center) and updated_PopOverlayActivatorto support popup alignment.
1.2.3 #
- No longer exporting web exclusive packages (
universal_html,web...)
1.2.2 #
- SDK constraint upgrade
1.2.1 #
- no longer depending on
web^1.1.1
1.2.0 #
s_sidebar&pop_overlaysub-packages upgrades:- Added
animateFromOffsettoactivateSideBarto allow animating the sidebar popup from a specific screen position (e.g., button tap location). - Added
curveparameter to customize the animation curve. - Added
animationDurationparameter to control the popup animation speed. - Added
useGlobalPositionparameter toactivateSideBarandPopOverlay, simplifying coordinate handling by automatically converting global tap positions. - Fixed an issue where
SSideBarcould error with infinite height constraints when used in an overlay. - Example app's showcases updated accordingly for both
s_sidebar&pop_overlaysub-packages
- Added
READMEupdated
1.1.4 #
- removed some conflicting dependencies
1.1.3 #
- dependencies upgraded
- new dependencies added not used in this package but included for export convenience, so users don't have to add them separately when using the widgets that depend on them.
1.1.2 #
- all Flutter platforms made enabled
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.1.1 - 2026-02-06 #
- README updated
1.1.0 - 2026-02-06 #
- full restructure of the package and subpackages + subpackages are exported so to be accessible by the
s_packagesusers
1.0.3 - 2026-02-06 #
- s_packages.dart placed in the root folder, and its exports URLs fixed
1.0.2 - 2026-02-06 #
- s_packages.dart created, that exports all included sub packages
1.0.1 - 2026-02-06 #
- README and example gif updated
1.0.0 - 2026-02-05 #
Added #
Initial Release
This is the first public release of s_packages, a comprehensive collection of 43 Flutter packages designed to accelerate development and provide reusable UI components, utilities, and tools.
Package Categories
UI Components (20 packages)
bubble_label- A bubble label widget for displaying tags and labelss_animated_tabs- Animated tab bar with smooth transitionss_banner- Customizable banner widget for notificationss_button- Custom button widget with advanced stylings_context_menu- Context menu widget for right-click interactionss_disabled- Widget wrapper for disabled state managements_dropdown- Dropdown widget with advanced featuress_error_widget- Error display widget with customizable UIs_expendable_menu- Expandable menu widget for hierarchical navigations_future_button- Button with Future-based async operationss_ink_button- Button with ink ripple effectss_liquid_pull_to_refresh- Liquid-style pull to refresh animations_maintenance_button- Button for maintenance mode statess_modal- Modal dialog system with overlay managements_standby- Standby state widget for loading statess_toggle- Toggle switch widgets_widgets- Collection of reusable widgetssettings_item- Settings item widget for configuration screensticker_free_circular_progress_indicator- Progress indicator without ticker dependency
Lists and Collections (2 packages)
indexscroll_listview_builder- ListView with index scrolling capabilitiess_gridview- Enhanced grid view widget
Animations (3 packages)
s_bounceable- Bounceable animation effects for interactive widgetss_glow- Glow effects and visual enhancementsshaker- Shake animations for attention-grabbing effectssoundsliced_tween_animation_builder- Custom tween animation builder
Navigation (3 packages)
pop_overlay- Overlay management for navigationpop_this- Navigation utilities and helperss_sidebar- Sidebar navigation component
Networking (2 packages)
s_client- HTTP client utilities and helperss_connectivity- Connectivity monitoring and status
State Management (2 packages)
signals_watch- Signal watching utilities for reactive programmingstates_rebuilder_extended- Extended state management solutions
Input & Interaction (1 package)
keystroke_listener- Keyboard event listener and handler
Layout (1 package)
s_offstage- Offstage widget utilities for conditional rendering
Platform Integration (1 package)
s_webview- WebView integration for embedded web content
Utilities (4 packages)
post_frame- Post-frame callbacks for timing controls_screenshot- Screenshot capture utilitiess_time- Time utilities and formatterssoundsliced_dart_extensions- Dart language extensions
Calendar (1 package)
week_calendar- Week-based calendar widget
Example Application
- Comprehensive example app showcasing all 43 packages
- Material Design 3 UI with light/dark theme support
- Package browser with search and category filtering
- Interactive demos for each package
- Example assets including GIF demonstrations
Documentation
- Complete README with installation and usage instructions
- Individual package documentation
- Code examples for basic and advanced usage
- GitHub repository with issue tracking
Features #
- ✨ 43 production-ready packages
- 📦 Unified package management
- 🎨 Material Design 3 support
- 🌓 Light and dark theme compatibility
- 📱 Cross-platform support (iOS, Android, Web, Desktop)
- 🔍 Comprehensive example app
- 📚 Extensive documentation
- ⚡ Performance optimized
- 🧪 Tested and validated