শিশু হিসাবে Column
দুটি TextField
উইজেট সহ আমার একটি উইজেট রয়েছে এবং আমি তাদের উভয়ের মধ্যে কিছুটা জায়গা রাখতে চাই।
আমি ইতিমধ্যে চেষ্টা করেছি mainAxisAlignment: MainAxisAlignment.spaceAround
, তবে ফলাফলটি আমি যা চেয়েছিলাম তা হয়নি।
শিশু হিসাবে Column
দুটি TextField
উইজেট সহ আমার একটি উইজেট রয়েছে এবং আমি তাদের উভয়ের মধ্যে কিছুটা জায়গা রাখতে চাই।
আমি ইতিমধ্যে চেষ্টা করেছি mainAxisAlignment: MainAxisAlignment.spaceAround
, তবে ফলাফলটি আমি যা চেয়েছিলাম তা হয়নি।
margin: EdgeInsets.only(left: 200.0, top: 300.0))
উত্তর:
আপনি Padding
এই দুটি উইজেটের মধ্যে উইজেট ব্যবহার করতে পারেন বা সেই উইজেটগুলিকে উইজেটের সাথে মোড়ানো করতে পারেন Padding
।
হালনাগাদ
সাইজডবক্স উইজেট দুটি উইজেটের মধ্যে দুটি উইজেটের মধ্যে স্থান যোগ করতে ব্যবহৃত হতে পারে এবং কোডটি প্যাডিং উইজেটের চেয়ে আরও পঠনযোগ্য করে তোলে।
প্রাক্তন:
Column(
children: <Widget>[
Widget1(),
SizedBox(height: 10),
Widget2(),
],
),
column
ক্লাসে সেই সম্পত্তি অন্তর্ভুক্ত থাকতে পারে সমস্ত বাচ্চাদের মধ্যে প্যাডিংয়ের জন্য কোডিংয়ের সময় নষ্ট হবে।
Padding
উইজেটটি 2 টি উইজেটের মধ্যে যায় । এটি এমন নয় যে 2 টি উইজেটগুলি শিশুদের হয়ে ওঠে Padding
।
আপনি উইজেটগুলির মধ্যে SizedBox
একটি নির্দিষ্ট দিয়ে একটি রাখতে height
পারেন:
Column(
children: <Widget>[
FirstWidget(),
SizedBox(height: 100),
SecondWidget(),
],
),
এগুলি উইজেটগুলিকে মোড়কে কেন পছন্দ করবেন Padding
? পঠনযোগ্যতা! কম ভিজ্যুয়াল বয়লারপ্লেট রয়েছে, কম ইনডেনশন রয়েছে এবং কোডটি সাধারণত পাঠ্য ক্রম অনুসরণ করে।
SizedBox
এটি কেবলমাত্র একটি সাধারণ উইজেট যা একটি পছন্দসই আকারযুক্ত এটি লেআউট চলাকালীন হওয়ার চেষ্টা করে, তবে কিছুই সরবরাহ করে না। পাঠ্য বা ধারকগুলির মতো সমস্ত পাতার উইজেটগুলিও খালি, তাই ঠিক আছে।
আপনি শিশু উইজেটগুলির মধ্যে স্থান যোগ করার 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')
]
)
runSpacing
পরিবর্তে ব্যবহার করুনspacing
এটিকে মোড়ানোর জন্য কেবল প্যাডিং ব্যবহার করুন:
Column(
children: <Widget>[
Padding(
padding: EdgeInsets.all(8.0),
child: Text('Hello World!'),
),
Padding(
padding: EdgeInsets.all(8.0),
child: Text('Hello World2!'),
)
]);
আপনি কনটেইনার (প্যাডিং ...) বা সাইজবক্স (উচ্চতা: এক্সএক্স )ও ব্যবহার করতে পারেন। সর্বশেষটি সর্বাধিক সাধারণ তবে এটি কীভাবে আপনার উইজেটগুলির স্থান পরিচালনা করতে চান তা ডিপেন্ড করবে, স্থানটি যদি সত্যই উইজেটের অংশ হয় তবে উদাহরণস্বরূপ তালিকার জন্য সাইজবক্স ব্যবহার করতে চাই।
এটি করার বিভিন্ন উপায় রয়েছে, আমি এখানে কয়েকটি তালিকাবদ্ধ করছি।
ব্যবহার করুন Container
এবং কিছু উচ্চতা দিন:
Column(
children: <Widget>[
Widget1(),
Container(height: 10), // set height
Widget2(),
],
)
ব্যবহার Spacer
Column(
children: <Widget>[
Widget1(),
Spacer(), // use Spacer
Widget2(),
],
)
ব্যবহার Expanded
Column(
children: <Widget>[
Widget1(),
Expanded(child: SizedBox()), // use Expanded
Widget2(),
],
)
ব্যবহার mainAxisAlignment
Column(
mainAxisAlignment: MainAxisAlignment.spaceAround, // mainAxisAlignment
children: <Widget>[
Widget1(),
Widget2(),
],
)
ব্যবহার Wrap
Wrap(
direction: Axis.vertical, // make sure to set this
spacing: 20, // set your spacing
children: <Widget>[
Widget1(),
Widget2(),
],
)
Column(
children: <Widget>[
FirstWidget(),
Spacer(),
SecondWidget(),
]
)
স্পেসার একটি [নমনীয়] উইজেটে প্রবেশের জন্য একটি নমনীয় স্থান তৈরি করে। (একটি কলামের মতো)
আপনি এই সমস্যাটি বিভিন্ন উপায়ে সমাধান করতে পারেন।
আপনি যদি সারি / কলামটি ব্যবহার করেন তবে আপনাকে mainAxisAlignment: MainAxisAlignment.spaceEvenly ব্যবহার করতে হবে
আপনি ব্যবহার করেন তাহলে মোড়ানো উইজেট আপনি ব্যবহার করতে হবে 5, ব্যবধান: runSpacing 10,
যে কোনও জায়গায় আপনি সাইজবক্স () ব্যবহার করতে পারেন
ডিফল্টরূপে কলামগুলির কোনও উচ্চতা নেই, আপনি আপনার কলামটি ধারকটিতে আবৃত করতে পারেন এবং আপনার ধারকটিতে নির্দিষ্ট উচ্চতা যুক্ত করতে পারেন। তারপরে আপনি নীচের মতো কিছু ব্যবহার করতে পারেন:
Container(
width: double.infinity,//Your desire Width
height: height,//Your desire Height
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text('One'),
Text('Two')
],
),
),
এখানে অনেক উত্তর রয়েছে তবে আমি এখানে সবচেয়ে গুরুত্বপূর্ণ উত্তরটি রাখব যা প্রত্যেকের ব্যবহার করা উচিত।
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
]
)
Column(children: <Widget>[
Container(margin: EdgeInsets.only(top:12, child: yourWidget)),
Container(margin: EdgeInsets.only(top:12, child: yourWidget))
]);
আপনার কলামের বাচ্চাদের মধ্যে আপনাকে সাইজডবক্স () উইজেট ব্যবহার করতে হতে পারে। আশা করি কাজে লাগবে
আকারের বাক্সটি ক্ষেত্রে সহায়তা করবে না, ফোনটি ল্যান্ডস্কেপ মোডে রয়েছে।
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),
),
),
),
],
)