তোড়জোড় মধ্যে কলাম বাচ্চাদের মধ্যে স্থান


107

শিশু হিসাবে Columnদুটি TextFieldউইজেট সহ আমার একটি উইজেট রয়েছে এবং আমি তাদের উভয়ের মধ্যে কিছুটা জায়গা রাখতে চাই।

আমি ইতিমধ্যে চেষ্টা করেছি mainAxisAlignment: MainAxisAlignment.spaceAround, তবে ফলাফলটি আমি যা চেয়েছিলাম তা হয়নি।


4
সহজভাবে সাইজডবক্সটি রাখুন (উচ্চতা: 15.0,), দুটি পাঠ্যফিল্ডের মধ্যে
anmol.majhail

margin: EdgeInsets.only(left: 200.0, top: 300.0))
user7856586

উত্তর:


132

আপনি Paddingএই দুটি উইজেটের মধ্যে উইজেট ব্যবহার করতে পারেন বা সেই উইজেটগুলিকে উইজেটের সাথে মোড়ানো করতে পারেন Padding

হালনাগাদ

সাইজডবক্স উইজেট দুটি উইজেটের মধ্যে দুটি উইজেটের মধ্যে স্থান যোগ করতে ব্যবহৃত হতে পারে এবং কোডটি প্যাডিং উইজেটের চেয়ে আরও পঠনযোগ্য করে তোলে।

প্রাক্তন:

Column(
  children: <Widget>[
    Widget1(),
    SizedBox(height: 10),
    Widget2(),
  ],
),

6
আমি নিশ্চিত যে - columnক্লাসে সেই সম্পত্তি অন্তর্ভুক্ত থাকতে পারে সমস্ত বাচ্চাদের মধ্যে প্যাডিংয়ের জন্য কোডিংয়ের সময় নষ্ট হবে।
হারুন হাজেম

প্যাডিং উইজেটগুলি যখন কেবলমাত্র একক সন্তানের প্যারামিটার নেয় আপনি কীভাবে প্যাডিং উইজেটে দুটি উইজেট গুটিয়ে রাখতে পারেন?
স্কটএফ

@ স্কটএফ উত্তরটি বলেছে যে Paddingউইজেটটি 2 টি উইজেটের মধ্যে যায় । এটি এমন নয় যে 2 টি উইজেটগুলি শিশুদের হয়ে ওঠে Padding
marcusljx

4
এটি সরাসরি বলে "বা প্যাডিং উইজেটের সাথে those উইজেটগুলি মোড়ানো" ....
স্কটএফ

@ স্কটএফ শিশু হিসাবে দুটি উইজেট দিয়ে বাচ্চাকে একটি কলাম বা সারি করুন।
রিলে ফিৎসপ্যাট্রিক

140

আপনি উইজেটগুলির মধ্যে SizedBoxএকটি নির্দিষ্ট দিয়ে একটি রাখতে heightপারেন:

Column(
  children: <Widget>[
    FirstWidget(),
    SizedBox(height: 100),
    SecondWidget(),
  ],
),

এগুলি উইজেটগুলিকে মোড়কে কেন পছন্দ করবেন Padding? পঠনযোগ্যতা! কম ভিজ্যুয়াল বয়লারপ্লেট রয়েছে, কম ইনডেনশন রয়েছে এবং কোডটি সাধারণত পাঠ্য ক্রম অনুসরণ করে।


একটি মাপের বাক্স যুক্ত করা কি খালি ভিউ যুক্ত করার মতো? কোন সমস্যা হতে পারে যে এনটি এন?
ব্যবহারকারীর 38381191

SizedBoxএটি কেবলমাত্র একটি সাধারণ উইজেট যা একটি পছন্দসই আকারযুক্ত এটি লেআউট চলাকালীন হওয়ার চেষ্টা করে, তবে কিছুই সরবরাহ করে না। পাঠ্য বা ধারকগুলির মতো সমস্ত পাতার উইজেটগুলিও খালি, তাই ঠিক আছে।
মার্সেল

50

আপনি শিশু উইজেটগুলির মধ্যে স্থান যোগ করার Wrap()পরিবর্তে উইজেট ব্যবহার করতে পারেন Column()children এবং শিশুদের মধ্যে সমান ব্যবধান দেওয়ার জন্য ব্যবধানের সম্পত্তিটি ব্যবহার করুন

Wrap(
  spacing: 20, // to apply margin in the main axis of the wrap
  runSpacing: 20, // to apply margin in the cross axis of the wrap
  children: <Widget>[
     Text('child 1'),
     Text('child 2')
  ]
)

4
উল্লম্ব ব্যবধানযুক্ত আইটেমগুলির মধ্যে ফাঁকগুলির runSpacingপরিবর্তে ব্যবহার করুনspacing
অর্পিত

এটি আমার সাথে কাজ করেছে। আমি মনে করি এটি সর্বোত্তম সমাধান তবে কলাম () এর পরিবর্তে মোড়ক () ব্যবহারের ক্ষতি কী হবে?
লিমা চাভস

4
মোড়ানো নয় এমন অবস্থায় কলামটি একটি প্রসারিত উইজেট। সুতরাং আপনি যখন পিতামাতার পুরো স্থানটি প্রসারিত করতে চান, আপনার কলাম বা সারি ইত্যাদির মতো প্রসারিত উইজেটগুলি ব্যবহার করা উচিত এটি আপনার ক্ষেত্রে নির্ভর করে
মাহদি তোহিদলু

হ্যাঁ, প্রতিটি শিশুকে স্বতন্ত্রভাবে মোড়ানো থেকে এটি আরও ভাল। ভাল পরামর্শ।
কেভিন এইচ

31

এটিকে মোড়ানোর জন্য কেবল প্যাডিং ব্যবহার করুন:

Column(
  children: <Widget>[
  Padding(
    padding: EdgeInsets.all(8.0),
    child: Text('Hello World!'),
  ),
  Padding(
    padding: EdgeInsets.all(8.0),
    child: Text('Hello World2!'),
  )
]);

আপনি কনটেইনার (প্যাডিং ...) বা সাইজবক্স (উচ্চতা: এক্সএক্স )ও ব্যবহার করতে পারেন। সর্বশেষটি সর্বাধিক সাধারণ তবে এটি কীভাবে আপনার উইজেটগুলির স্থান পরিচালনা করতে চান তা ডিপেন্ড করবে, স্থানটি যদি সত্যই উইজেটের অংশ হয় তবে উদাহরণস্বরূপ তালিকার জন্য সাইজবক্স ব্যবহার করতে চাই।


সিএসএস গ্রিড-ফাঁক জাতীয় কিছু করার উপায় আছে কি?
অসীম

15

এটি করার বিভিন্ন উপায় রয়েছে, আমি এখানে কয়েকটি তালিকাবদ্ধ করছি।

  1. ব্যবহার করুন Containerএবং কিছু উচ্চতা দিন:

    Column(
      children: <Widget>[
        Widget1(),
        Container(height: 10), // set height
        Widget2(),
      ],
    )
    
  2. ব্যবহার Spacer

    Column(
      children: <Widget>[
        Widget1(),
        Spacer(), // use Spacer
        Widget2(),
      ],
    )
    
  3. ব্যবহার Expanded

    Column(
      children: <Widget>[
        Widget1(),
        Expanded(child: SizedBox()), // use Expanded
        Widget2(),
      ],
    )
    
  4. ব্যবহার mainAxisAlignment

    Column(
      mainAxisAlignment: MainAxisAlignment.spaceAround, // mainAxisAlignment
      children: <Widget>[
        Widget1(),
        Widget2(),
      ],
    )
    
  5. ব্যবহার Wrap

    Wrap(
      direction: Axis.vertical, // make sure to set this
      spacing: 20, // set your spacing
      children: <Widget>[
        Widget1(),
        Widget2(),
      ],
    )
    

8
Column(
  children: <Widget>[
    FirstWidget(),
    Spacer(),
    SecondWidget(),
  ]
)

স্পেসার একটি [নমনীয়] উইজেটে প্রবেশের জন্য একটি নমনীয় স্থান তৈরি করে। (একটি কলামের মতো)


4
অন্যদের আরও ভালভাবে বুঝতে সাহায্য করার জন্য দয়া করে আপনার উত্তরে কিছু ব্যাখ্যা যুক্ত করুন। কোডের উত্তরগুলি কেবলমাত্র অসম্পূর্ণ হিসাবে বিবেচিত হয় এবং এটি ওপিকে যে সমস্যার সাথে আপনি সাহায্য করার চেষ্টা করছেন তা বুঝতে সাহায্য করতে পারে না।
মাইকেল

7

একই ভাবে SizedBox ব্যবহার করা হয় উপরে কোড পাঠযোগ্যতা উদ্দেশ্যে, আপনি একই পদ্ধতিতে প্যাডিং উইজেট ব্যবহার করতে পারেন এবং এটা কলাম সন্তান কোন একটি পিতা বা মাতা উইজেট করতে হবে

Column(
  children: <Widget>[
    FirstWidget(),
    Padding(padding: EdgeInsets.only(top: 40.0)),
    SecondWidget(),
  ]
)

2

আপনি এই সমস্যাটি বিভিন্ন উপায়ে সমাধান করতে পারেন।

আপনি যদি সারি / কলামটি ব্যবহার করেন তবে আপনাকে mainAxisAlignment: MainAxisAlignment.spaceEvenly ব্যবহার করতে হবে

আপনি ব্যবহার করেন তাহলে মোড়ানো উইজেট আপনি ব্যবহার করতে হবে 5, ব্যবধান: runSpacing 10,

যে কোনও জায়গায় আপনি সাইজবক্স () ব্যবহার করতে পারেন


1

ডিফল্টরূপে কলামগুলির কোনও উচ্চতা নেই, আপনি আপনার কলামটি ধারকটিতে আবৃত করতে পারেন এবং আপনার ধারকটিতে নির্দিষ্ট উচ্চতা যুক্ত করতে পারেন। তারপরে আপনি নীচের মতো কিছু ব্যবহার করতে পারেন:

Container(
   width: double.infinity,//Your desire Width
   height: height,//Your desire Height
   child: Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: <Widget>[
         Text('One'),
         Text('Two')
      ],
   ),
),

1

এখানে অনেক উত্তর রয়েছে তবে আমি এখানে সবচেয়ে গুরুত্বপূর্ণ উত্তরটি রাখব যা প্রত্যেকের ব্যবহার করা উচিত।

1. কলাম

 Column(
          children: <Widget>[
            Text('Widget A'), //Can be any widget
            SizedBox(height: 20,), //height is space betweeen your top and bottom widget
            Text('Widget B'), //Can be any widget
          ],
        ),

2. মোড়ানো

     Wrap(
          direction: Axis.vertical, // We have to declare Axis.vertical, otherwise by default widget are drawn in horizontal order
            spacing: 20, // Add spacing one time which is same for all other widgets in the children list
            children: <Widget>[
              Text('Widget A'), // Can be any widget
              Text('Widget B'), // Can be any widget
            ]
        )


0

আপনার কলামের বাচ্চাদের মধ্যে আপনাকে সাইজডবক্স () উইজেট ব্যবহার করতে হতে পারে। আশা করি কাজে লাগবে


আপনার যদি নতুন প্রশ্ন থাকে তবে দয়া করে প্রশ্ন জিজ্ঞাসা বোতামটি ক্লিক করে এটি জিজ্ঞাসা করুন । যদি এই প্রসঙ্গে সরবরাহ করতে সহায়তা করে তবে এই প্রশ্নের একটি লিঙ্ক অন্তর্ভুক্ত করুন। - পর্যালোচনা থেকে
ব্রুনো


-1

আকারের বাক্সটি ক্ষেত্রে সহায়তা করবে না, ফোনটি ল্যান্ডস্কেপ মোডে রয়েছে।

body: Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: <Widget>[
        Expanded(
           child: Container(
            margin: EdgeInsets.all(15.0),
            decoration: BoxDecoration(
              color: Color(0xFF1D1E33),
              borderRadius: BorderRadius.circular(10.0),
            ),
          ),
        ),
        Expanded(
           child: Container(
            margin: EdgeInsets.all(15.0),
            decoration: BoxDecoration(
              color: Color(0xFF1D1E33),
              borderRadius: BorderRadius.circular(10.0),
            ),
          ),
        ),
        Expanded(
           child: Container(
            margin: EdgeInsets.all(15.0),
            decoration: BoxDecoration(
              color: Color(0xFF1D1E33),
              borderRadius: BorderRadius.circular(10.0),
            ),
          ),
        ),
      ],
     )
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.