Responsive Spacing

A simple Flutter package to add responsive padding, margin, and scalable spacing widgets for consistent, adaptive layouts across all screen sizes. Includes utilities like ResponsivePadding, ResponsiveMargin, ResponsiveSpacer, and ResponsiveSpacingProvider to help you build fluid and maintainable UIs with ease.

Features

  • ResponsivePadding: Adds adjustable padding around a widget based on screen size.
  • ResponsiveMargin: Adds adjustable margin around a widget based on screen size.
  • ResponsiveSpacingProvider: Provides a spacing scale (xs, sm, md, lg, xl) based on screen size.
  • ResponsiveSpacer: Adds vertical or horizontal space using the spacing scale.
  • context.spacing: Access the spacing values directly from BuildContext.
  • Fully customizable spacing system with base unit and scale factor..

Installation

To include the Responsive Spacing package in your Flutter project, add the following dependency to your pubspec.yaml file:

dependencies:
  responsive_spacing_v2: ^latest

Example Usage

import 'package:responsive_spacing_v2/responsive_spacing_v2.dart';

✅ Getting Started

Wrap your app with ResponsiveSpacingProvider in main.dart:

void main() {
  runApp(
    ResponsiveSpacingProvider(
      base: 8.0,  // Base spacing unit
      scale: 1.5, // Scale factor for spacing levels
      child: MyApp(),
    ),
  );
}

✅ResponsivePadding

The ResponsivePadding widget allows you to add responsive padding around any child widget based on the screen size. Below is an example of how to use it:

ResponsivePadding(
  smallScreenPadding: 8.0, // Padding for screens smaller than 600px
  largeScreenPadding: 16.0, // Padding for screens 600px and larger
  child: Container(
    color: Colors.blue,
    child: Text(
      "This text has responsive padding",
      style: TextStyle(color: Colors.white),
    ),
  ),
);

✅ResponsiveMargin

The ResponsiveMargin widget allows you to add responsive margin around any child widget. Here’s an example:

ResponsiveMargin(
  smallScreenMargin: 8.0, // Margin for screens smaller than 600px
  largeScreenMargin: 16.0, // Margin for screens 600px and larger
  child: ElevatedButton(
    onPressed: () {
      // Button action
      print("Button pressed!");
    },
    child: Text("Button with responsive margin"),
  ),
);

✅ResponsiveSpacer

The ResponsiveSpacer widget inserts vertical or horizontal space using the spacing scale.

const ResponsiveSpacer(size: 'md'); // Adds vertical spacing of base * scale^2

const ResponsiveSpacer(size: 'lg', axis: Axis.horizontal); // Horizontal spacing

✅Access Spacing via context.spacing

You can access spacing values directly from the context using predefined sizes:

Padding(
  padding: EdgeInsets.symmetric(
    vertical: context.spacing.sm, // base * scale
    horizontal: context.spacing.lg, // base * scale^3
  ),
  child: Text("Padding using context.spacing"),
);