Widgets

Spacing

परिचय

Spacing विजेट UI एलिमेंट्स के बीच सुसंगत स्पेसिंग जोड़ने का एक साफ, पठनीय तरीका प्रदान करता है। अपने कोड में मैन्युअली SizedBox इंस्टेंस बनाने के बजाय, आप सिमैंटिक प्रीसेट्स या कस्टम वैल्यू के साथ Spacing का उपयोग कर सकते हैं।

// Instead of this:
SizedBox(height: 16),

// Write this:
Spacing.md,

प्रीसेट साइज़

Spacing सामान्य स्पेसिंग वैल्यू के लिए बिल्ट-इन प्रीसेट्स के साथ आता है। ये आपके ऐप में सुसंगत स्पेसिंग बनाए रखने में मदद करते हैं।

वर्टिकल स्पेसिंग प्रीसेट्स

इन्हें Column विजेट्स में या जहाँ भी आपको वर्टिकल स्पेस चाहिए वहाँ उपयोग करें:

प्रीसेट साइज़ उपयोग
Spacing.zero 0px सशर्त स्पेसिंग
Spacing.xs 4px अतिरिक्त छोटा
Spacing.sm 8px छोटा
Spacing.md 16px मध्यम
Spacing.lg 24px बड़ा
Spacing.xl 32px अतिरिक्त बड़ा
Column(
  children: [
    Text("Title"),
    Spacing.sm,
    Text("Subtitle"),
    Spacing.lg,
    Text("Body content"),
    Spacing.xl,
    ElevatedButton(
      onPressed: () {},
      child: Text("Action"),
    ),
  ],
)

हॉरिज़ॉन्टल स्पेसिंग प्रीसेट्स

इन्हें Row विजेट्स में या जहाँ भी आपको हॉरिज़ॉन्टल स्पेस चाहिए वहाँ उपयोग करें:

प्रीसेट साइज़ उपयोग
Spacing.xsHorizontal 4px अतिरिक्त छोटा
Spacing.smHorizontal 8px छोटा
Spacing.mdHorizontal 16px मध्यम
Spacing.lgHorizontal 24px बड़ा
Spacing.xlHorizontal 32px अतिरिक्त बड़ा
Row(
  children: [
    Icon(Icons.star),
    Spacing.smHorizontal,
    Text("Rating"),
    Spacing.lgHorizontal,
    Text("5.0"),
  ],
)

कस्टम स्पेसिंग

जब प्रीसेट आपकी आवश्यकताओं को पूरा नहीं करते, तो कस्टम स्पेसिंग बनाएँ:

वर्टिकल स्पेसिंग

Spacing.vertical(12) // 12 logical pixels of vertical space

हॉरिज़ॉन्टल स्पेसिंग

Spacing.horizontal(20) // 20 logical pixels of horizontal space

दोनों डाइमेंशन

Spacing(width: 10, height: 20) // Custom width and height

उदाहरण

Column(
  children: [
    Text("Header"),
    Spacing.vertical(40), // Custom 40px gap
    Card(
      child: Padding(
        padding: EdgeInsets.all(16),
        child: Row(
          children: [
            Icon(Icons.info),
            Spacing.horizontal(12), // Custom 12px gap
            Expanded(child: Text("Information text")),
          ],
        ),
      ),
    ),
  ],
)

स्लिवर्स के साथ उपयोग

CustomScrollView और स्लिवर्स के साथ काम करते समय, asSliver() मेथड का उपयोग करें:

CustomScrollView(
  slivers: [
    SliverAppBar(
      title: Text("My App"),
    ),
    Spacing.lg.asSliver(), // Converts to SliverToBoxAdapter
    SliverList(
      delegate: SliverChildBuilderDelegate(
        (context, index) => ListTile(title: Text("Item $index")),
        childCount: 10,
      ),
    ),
    Spacing.xl.asSliver(),
    SliverToBoxAdapter(
      child: Text("Footer"),
    ),
  ],
)

asSliver() मेथड Spacing विजेट को SliverToBoxAdapter में रैप करता है, जिससे यह स्लिवर-आधारित लेआउट के साथ संगत हो जाता है।

सशर्त स्पेसिंग

सशर्त स्पेसिंग के लिए Spacing.zero का उपयोग करें:

Column(
  children: [
    Text("Always visible"),
    showExtraSpace ? Spacing.lg : Spacing.zero,
    Text("Content below"),
  ],
)