S Packages

pub package License: MIT

A comprehensive collection of 43 Flutter packages designed to accelerate development with reusable UI components, utilities, and tools. Built for modern Flutter applications with Material Design 3 support.

S Packages Example App

If you want to see a better GIF for each of these sub packages, then find their individual package in pub.dev (eg. search for s_button and you will see it in more detail and clearer).

NOTE: this s_packages package is the grouping of all of these, as a main repo

📦 What's Included

This unified package brings together 43 carefully crafted packages organized into 11 categories:

🎨 UI Components (20 packages)

📋 Lists & Collections

✨ Animations

🧭 Navigation

🌐 Networking

🔄 State Management

⌨️ Input & Interaction

📐 Layout

📱 Platform Integration

🛠️ Utilities

📅 Calendar

🚀 Installation

Add this to your package's pubspec.yaml file:

dependencies:
  s_packages: ^1.1.2

Then run:

flutter pub get

💡 Basic Usage

Example 1: Using S Modal

import 'package:flutter/material.dart';
import 'package:s_modal/s_modal.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
      // Wrap your app with Modal builder
      builder: (context, child) => Modal.appBuilder(
        context,
        child,
        backgroundColor: Colors.black54,
      ),
    );
  }
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('S Modal Example')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Modal.show(
              context: context,
              builder: (context) => Container(
                padding: EdgeInsets.all(24),
                child: Text('Hello from S Modal!'),
              ),
            );
          },
          child: Text('Show Modal'),
        ),
      ),
    );
  }
}

Example 2: Using S Button

import 'package:flutter/material.dart';
import 'package:s_button/s_button.dart';

class ButtonExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: SButton(
          onPressed: () {
            print('Button pressed!');
          },
          child: Text('Custom Button'),
          backgroundColor: Colors.blue,
          borderRadius: 12,
          padding: EdgeInsets.symmetric(horizontal: 24, vertical: 12),
        ),
      ),
    );
  }
}

Example 3: Using Keystroke Listener

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:keystroke_listener/keystroke_listener.dart';

class KeyboardExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return KeystrokeListener(
      onKeyPressed: (KeyEvent event) {
        if (event is KeyDownEvent) {
          print('Key pressed: ${event.logicalKey.keyLabel}');
        }
      },
      child: Scaffold(
        appBar: AppBar(title: Text('Keystroke Listener')),
        body: Center(
          child: Text('Press any key'),
        ),
      ),
    );
  }
}

🎯 Advanced Usage

Example 4: Combining Multiple Packages

import 'package:flutter/material.dart';
import 'package:s_modal/s_modal.dart';
import 'package:s_connectivity/s_connectivity.dart';
import 'package:s_future_button/s_future_button.dart';

class AdvancedExample extends StatelessWidget {
  Future<void> _submitData() async {
    // Simulate API call
    await Future.delayed(Duration(seconds: 2));
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Advanced Example')),
      body: Column(
        children: [
          // Connectivity monitoring
          SConnectivity(
            onConnected: () {
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('Connected to internet')),
              );
            },
            onDisconnected: () {
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('No internet connection')),
              );
            },
            child: Container(),
          ),
          
          // Future button with loading state
          SFutureButton(
            onPressed: _submitData,
            builder: (context, isLoading) {
              return ElevatedButton(
                onPressed: isLoading ? null : null,
                child: isLoading
                    ? CircularProgressIndicator()
                    : Text('Submit'),
              );
            },
          ),
        ],
      ),
    );
  }
}

Example 5: Creating Animated UI

import 'package:flutter/material.dart';
import 'package:s_bounceable/s_bounceable.dart';
import 'package:s_glow/s_glow.dart';
import 'package:shaker/shaker.dart';

class AnimatedUIExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Animations')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // Bounceable widget
            SBounceable(
              onTap: () => print('Bounced!'),
              child: Container(
                padding: EdgeInsets.all(20),
                decoration: BoxDecoration(
                  color: Colors.blue,
                  borderRadius: BorderRadius.circular(12),
                ),
                child: Text('Tap me!'),
              ),
            ),
            
            SizedBox(height: 24),
            
            // Glow effect
            SGlow(
              color: Colors.purple,
              child: Icon(Icons.star, size: 48),
            ),
            
            SizedBox(height: 24),
            
            // Shake animation
            Shaker(
              duration: Duration(milliseconds: 500),
              child: Text('Shake on error!'),
            ),
          ],
        ),
      ),
    );
  }
}

📱 Running the Example App

This package includes a comprehensive example app showcasing all 43 packages:

cd example
flutter pub get
flutter run

The example app features:

  • 🔍 Search functionality to find packages
  • 📂 Category-based organization
  • 🎨 Material Design 3 UI
  • 🌓 Light and dark theme support
  • 📱 Interactive demos for each package

🏗️ Project Structure

s_packages/
├── lib/                          # Main library exports
├── example/                      # Example application
│   ├── assets/
│   │   └── example.gif          # Demo GIF
│   └── lib/
│       ├── main.dart            # App entry point
│       ├── models/              # Data models
│       ├── screens/             # UI screens
│       └── widgets/             # Reusable widgets
├── bubble_label/                # Individual packages...
├── s_modal/
├── s_button/
└── ... (41 more packages)

🛠️ Development

Prerequisites

  • Flutter SDK >=3.0.0
  • Dart SDK >=3.0.0

Running Tests

flutter test

Code Analysis

flutter analyze

Formatting

dart format .

📚 Documentation

Each package includes its own documentation. Visit the individual package directories for detailed API documentation and usage examples.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

✨ Features

  • ✅ 43 production-ready packages
  • ✅ Material Design 3 support
  • ✅ Light and dark theme compatibility
  • ✅ Cross-platform (iOS, Android, Web, Desktop)
  • ✅ Comprehensive example app
  • ✅ Extensive documentation
  • ✅ Active maintenance
  • ✅ MIT licensed

📊 Package Stats

  • Total Packages: 43
  • Categories: 11
  • Example Demos: 43+
  • Minimum Flutter Version: 3.0.0
  • Minimum Dart Version: 3.0.0

🙏 Acknowledgments

Developed and maintained by SoundSliced.


Made with ❤️ for the Flutter community

Libraries

bubble_label/bubble_label
bubble_label package
bubble_label/src/bubble_label
indexscroll_listview_builder/indexscroll_listview_builder
A Flutter package providing an enhanced ListView.builder with bidirectional index-based scrolling.
indexscroll_listview_builder/main
indexscroll_listview_builder/src/indexed_scroll_child
indexscroll_listview_builder/src/indexed_scroll_controller
indexscroll_listview_builder/src/indexscroll_listview_builder
keystroke_listener/keystroke_listener
keystroke_listener package
keystroke_listener/src/keystroke_listener
pop_overlay/pop_overlay
pop_overlay package
pop_overlay/src/escape_key_listener
pop_overlay/src/pop_overlay
pop_this/pop_this
pop_this package
pop_this/src/pop_this
post_frame/post_frame
frame package
post_frame/src/post_frame
post_frame/src/post_frame_extensions
s_animated_tabs/s_animated_tabs
s_animated_tabs package
s_animated_tabs/src/s_animated_tabs
s_banner/s_banner
s_banner package
s_banner/src/s_banner
s_bounceable/s_bounceable
s_bounceable package
s_bounceable/src/s_bounceable
s_button/s_button
s_button/src/s_button
s_client/s_client
s_client package - Modern HTTP Client
s_client/src/client
s_client/src/client_config
s_client/src/enums/client_type
s_client/src/interceptors/auth_interceptor
s_client/src/interceptors/cache_interceptor
s_client/src/interceptors/client_interceptor
s_client/src/interceptors/logging_interceptor
s_client/src/models/client_exception
s_client/src/models/client_response
s_connectivity/s_connectivity
s_connectivity package
s_connectivity/src/s_connection
s_context_menu/s_context_menu
s_context_menu package
s_context_menu/src/s_context_menu
SContextMenu – Advanced contextual actions widget
s_context_menu/src/s_context_menu_controllers
s_context_menu/src/s_context_menu_theme
s_context_menu/src/s_context_menu_types
s_disabled/s_disabled
s_disabled package
s_disabled/src/s_disabled
s_dropdown/s_dropdown
s_dropdown package
s_dropdown/src/s_dropdown
s_dropdown/src/s_dropdown_decoration
s_error_widget/s_error_widget
s_error_widget package
s_error_widget/src/s_error_widget
s_expendable_menu/s_expendable_menu
s_expendable_menu package
s_expendable_menu/src/s_expendable_menu
s_future_button/s_future_button
future_button package
s_future_button/src/s_future_button
s_glow/s_glow
glow1_2 package
s_glow/src/glow1
s_glow/src/glow2
s_gridview/s_gridview
s_gridview
s_gridview/src/s_gridview
s_ink_button/s_ink_button
A Flutter package providing a customizable ink splash button with haptic feedback.
s_ink_button/src/haptic_feedback_type
s_ink_button/src/s_ink_button
s_liquid_pull_to_refresh/s_liquid_pull_to_refresh
s_liquid_pull_to_refresh package
s_liquid_pull_to_refresh/src/s_liquid_pull_to_refresh
s_maintenance_button/s_maintenance_button
s_maintenance_button package
s_maintenance_button/src/s_maintenance_button
s_modal/s_modal
s_modal package
s_modal/src/s_modal_libs
s_offstage/s_offstage
s_offstage package
s_offstage/src/s_offstage
s_packages
s_screenshot/s_screenshot
s_screenshot package
s_screenshot/src/s_screenshot
s_sidebar/s_sidebar
s_sidebar package
s_sidebar/src/s_sidebar
s_standby/s_standby
s_standby package
s_standby/src/s_standby
s_time/s_time
s_time package
s_time/src/extensions
s_time/src/time_input
s_time/src/time_spinner
s_toggle/s_toggle
s_toggle package
s_toggle/src/s_toggle
s_webview/s_webview
s_webview/src/_platforms
Platform support detection for s_webview This file imports all platform-specific implementations to ensure pub.dev's static analyzer detects support for all platforms.
s_webview/src/_platforms/android
Android-specific WebView implementation This file provides Android platform support for s_webview using webview_flutter.
s_webview/src/_platforms/ios
iOS-specific WebView implementation This file provides iOS platform support for s_webview using webview_flutter.
s_webview/src/_platforms/linux
Linux-specific WebView implementation This file provides Linux platform support for s_webview using desktop_webview_window.
s_webview/src/_platforms/macos
macOS-specific WebView implementation This file provides macOS platform support for s_webview using desktop_webview_window.
s_webview/src/_platforms/web
Web-specific WebView implementation This file provides Web platform support for s_webview using webview_flutter_web.
s_webview/src/_platforms/web_stub
Stub implementation for web platform support.
s_webview/src/_platforms/windows
Windows-specific WebView implementation This file provides Windows platform support for s_webview using desktop_webview_window.
s_webview/src/_s_webview/_s_webview
s_webview/src/_s_webview/web_utils/web_utils
s_webview/src/_s_webview/web_utils/web_utils_stub
Stub implementation of web utilities for non-web platforms.
s_webview/src/_s_webview/web_utils/web_utils_web
Web implementation of web utilities.
s_webview/src/_s_webview/webview_controller/webview_controller
s_webview/src/_s_webview/webview_controller/webview_controller_clean
s_webview/src/_s_webview/webview_controller/webview_controller_extensions
s_webview/src/_s_webview/webview_controller/webview_controller_web
s_webview/src/_s_webview/webview_desktop/src/create_configuration
s_webview/src/_s_webview/webview_desktop/src/message_channel
s_webview/src/_s_webview/webview_desktop/src/title_bar
s_webview/src/_s_webview/webview_desktop/src/webview
s_webview/src/_s_webview/webview_desktop/src/webview_impl
s_webview/src/_s_webview/webview_desktop/webview_desktop
s_webview/src/_s_webview/webview_desktop/webview_desktop_app
s_webview/src/_s_webview/webview_desktop/webview_desktop_web
s_webview/src/_s_webview/widget/webview
s_webview/src/_s_webview/widget/widget
s_webview/src/s_webview
s_widgets/s_widgets
s_widgets package
s_widgets/src/s_widgets
settings_item/settings_item
settings_item package
settings_item/src/settings_item
shaker/shaker
shaker package
shaker/src/shaker
signals_watch/signals_watch
A production-ready reactive widget for signals_flutter with lifecycle callbacks, debouncing, throttling, error handling, and more.
soundsliced_dart_extensions/soundsliced_dart_extensions
soundsliced_dart_extensions/src/dart_extensions
soundsliced_tween_animation_builder/soundsliced_tween_animation_builder
soundsliced_tween_animation_builder package
soundsliced_tween_animation_builder/src/soundsliced_tween_animation_builder
states_rebuilder_extended/src/states_rebuilder_extended
states_rebuilder_extended/states_rebuilder_extended
ticker_free_circular_progress_indicator/src/ticker_free_circular_progress_indicator
ticker_free_circular_progress_indicator/ticker_free_circular_progress_indicator
ticker_free_circular_progress_indicator package
week_calendar/src/week_calendar
week_calendar/week_calendar
week_calendar package