Kodokon kodokon.com

लेआउट: Row, Column, Padding, Expanded, SizedBox

कॉलम, पंक्तियों, स्पेसिंग और स्थान वितरण की मदद से स्क्रीन पर कई विजेट व्यवस्थित करें।

9 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

एक असली स्क्रीन शायद ही कभी एक ही विजेट दिखाती है: आपको उन्हें व्यवस्थित करना होता है। यही लेआउट विजेट का काम है। Column अपने चिल्ड्रन को ऊर्ध्वाधर रूप से, ऊपर से नीचे स्टैक करता है; Row उन्हें क्षैतिज रूप से, बाएँ से दाएँ संरेखित करता है। चूँकि वे कई चिल्ड्रन स्वीकार करते हैं, पैरामीटर को अब child नहीं बल्कि children कहा जाता है, और यह एक सूची प्राप्त करता है: वर्गाकार कोष्ठकों [ ] के बीच के विजेट, अल्पविरामों से अलग।

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

Widget buildProfile() {
  return const Column(
    children: [
      Icon(Icons.person, size: 48),
      Text("Sonia Ben Ali"),
      Text("Flutter Developer"),
    ],
  );
}
एक Column अपने चिल्ड्रन को ऊपर से नीचे स्टैक करता है

Row बिल्कुल इसी तरह काम करता है, लेकिन क्षैतिज रूप से। इसका मुख्य अक्ष चौड़ाई है: mainAxisAlignment पैरामीटर चुनता है कि चिल्ड्रन को उस अक्ष के साथ कैसे वितरित किया जाए (center उन्हें बीच में समूहित करने के लिए, spaceBetween उन्हें यथासंभव दूर फैलाने के लिए...)। और दो विजेट के बीच एक साधारण खाली जगह डालने के लिए, SizedBox का उपयोग करें: एक अदृश्य डिब्बा जिसकी चौड़ाई (width) या ऊँचाई (height) आप निर्धारित करते हैं।

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

Widget buildRating() {
  return const Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Icon(Icons.star, color: Colors.amber),
      SizedBox(width: 8),
      Text("4.8 out of 5"),
    ],
  );
}
एक केंद्रित Row, आइकन और टेक्स्ट के बीच 8 पिक्सेल के साथ

Padding अपने चाइल्ड के चारों ओर जगह जोड़ता है, ताकि सामग्री किनारों से न चिपके। जगह की मात्रा EdgeInsets से वर्णित की जाती है: EdgeInsets.all(16) चारों तरफ़ 16 पिक्सेल रखता है, EdgeInsets.only(left: 8) केवल बाईं ओर, और EdgeInsets.symmetric(horizontal: 12) बाईं और दाईं ओर एक साथ।

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

Widget buildQuote() {
  return const Padding(
    padding: EdgeInsets.all(16),
    child: Text("A text with some room around it"),
  );
}
टेक्स्ट के चारों ओर 16 पिक्सेल की जगह

एक आख़िरी टूल: Expanded। किसी Row या Column के चिल्ड्रन के बीच रखा गया, यह अपने चाइल्ड से बची हुई पूरी जगह लेने के लिए कहता है। नीचे दिए गए उदाहरण में, ग्रे डिब्बा अपनी 80 पिक्सेल चौड़ाई बनाए रखता है, और टील डिब्बा बची हुई चौड़ाई भरने के लिए फैल जाता है, स्क्रीन का आकार चाहे जो भी हो।

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

Widget buildProgress() {
  return Row(
    children: [
      Container(width: 80, height: 40, color: Colors.grey),
      Expanded(
        child: Container(height: 40, color: Colors.teal),
      ),
    ],
  );
}
Expanded अपने चाइल्ड को बची हुई पूरी जगह में फैला देता है

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. एक Column अपने चिल्ड्रन को किस दिशा में व्यवस्थित करता है?
    • क्षैतिज रूप से, बाएँ से दाएँ
    • ऊर्ध्वाधर रूप से, ऊपर से नीचे
    • एक वृत्त में, स्क्रीन के केंद्र के चारों ओर
  2. Expanded विजेट किसलिए है?
    • अपने चाइल्ड को किसी Row या Column में बची हुई पूरी जगह लेने के लिए
    • स्क्रीन पर हर टेक्स्ट का फ़ॉन्ट बड़ा करने के लिए
    • किसी छवि को छूने पर उसमें ज़ूम करने के लिए
  3. किसी Row में दो विजेट के बीच 8-पिक्सेल की खाली जगह आप कैसे डालते हैं?
    • दोनों के बीच रखे गए एक SizedBox(width: 8) से
    • स्पेस बार आठ बार दबाकर
    • एक Expanded(width: 8) से