0Pricing
Flutter Mobile Development · บทเรียน

วิดเจ็ตการจัดวางพื้นฐาน

เชี่ยวชาญวิดเจ็ตการจัดวางที่จำเป็น เช่น Row, Column, Container และ Stack เพื่อสร้างส่วนติดต่อผู้ใช้ที่เป็นระเบียบและปรับตามขนาดหน้าจอได้

วิดเจ็ตการจัดวางพื้นฐาน เป็นบทเรียน Flutter Mobile Development ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Flutter Mobile Development และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Flutter Mobile Development มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

Why Layouts Matter

In Flutter, everything is a widget! To build complex and beautiful user interfaces, you need to arrange these widgets on the screen.

Layout widgets are special widgets designed to help you organize other widgets, defining their size, position, and how they interact with each other.

Meet the Container

The Container widget is one of the most versatile layout widgets. Think of it as a customizable box that can hold a single child widget.

You can use it to:

  • Add padding or margins
  • Set background colors or decorations
  • Define specific width and height
  • Transform its position or rotation

Simple Colored Box

Let's create a basic Container with a child Text widget. Notice how we set its color and padding.

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Container Demo')),
        body: Center(
          child: Container(
            padding: const EdgeInsets.all(20.0),
            color: Colors.blueAccent,
            child: const Text(
              'Hello from Container!',
              style: TextStyle(color: Colors.white, fontSize: 18),
            ),
          ),
        ),
      ),
    );
  }
}

Horizontal with Row

When you need to arrange multiple widgets side-by-side horizontally, the Row widget is your go-to. It takes a list of widgets as its children.

Row automatically tries to fit its children along the horizontal axis, and you can control their alignment within the row.

Row of Buttons

Here's how you can place three buttons next to each other using a Row. We'll add some spacing between them.

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Row Demo')),
        body: Center(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: <Widget>[
              ElevatedButton(onPressed: () {}, child: const Text('Button 1')),
              ElevatedButton(onPressed: () {}, child: const Text('Button 2')),
              ElevatedButton(onPressed: () {}, child: const Text('Button 3')),
            ],
          ),
        ),
      ),
    );
  }
}

Vertical with Column

Just as Row arranges widgets horizontally, the Column widget arranges them vertically, one below the other.

It also takes a list of children and lets you control their vertical alignment.

Stacked Text Fields

Let's create a simple login-like form using a Column to stack two TextFields and a button vertically.

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Column Demo')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              const Padding(
                padding: EdgeInsets.all(8.0),
                child: TextField(
                  decoration: InputDecoration(labelText: 'Username'),
                ),
              ),
              const Padding(
                padding: EdgeInsets.all(8.0),
                child: TextField(
                  obscureText: true,
                  decoration: InputDecoration(labelText: 'Password'),
                ),
              ),
              ElevatedButton(onPressed: () {}, child: const Text('Login')),
            ],
          ),
        ),
      ),
    );
  }
}

Aligning Children

Both Row and Column use two important properties for alignment:

  • mainAxisAlignment: How children are positioned along the primary axis (horizontal for Row, vertical for Column). Examples: start, center, end, spaceAround.
  • crossAxisAlignment: How children are positioned along the perpendicular axis (vertical for Row, horizontal for Column). Examples: start, center, end, stretch.

These give you fine control over your layouts!

Overlapping with Stack

Sometimes you need to place widgets on top of each other, like text over an image. That's where the Stack widget comes in.

Stack allows you to layer multiple children widgets. You can control their exact position within the stack using the Positioned widget.

Image with Text Overlay

Let's put some text directly on top of an image using a Stack. We'll use Positioned to place the text precisely.

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Stack Demo')),
        body: Center(
          child: SizedBox(
            width: 300,
            height: 200,
            child: Stack(
              children: <Widget>[
                Image.network(
                  'https://picsum.photos/300/200',
                  fit: BoxFit.cover,
                ),
                const Positioned(
                  bottom: 10,
                  left: 10,
                  child: Text(
                    'Beautiful Scenery',
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 20,
                      fontWeight: FontWeight.bold,
                      shadows: [
                        Shadow(blurRadius: 5, color: Colors.black)
                      ],
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Layout Challenge

Which of the following widgets are primarily used for arranging multiple children widgets in a single direction (either horizontally or vertically)?

Layouts Mastered!

Great job! You've now mastered the fundamental layout widgets in Flutter:

  • Container: A versatile box for single children, offering padding, margin, color, and size control.
  • Row: Arranges multiple children horizontally.
  • Column: Arranges multiple children vertically.
  • Stack: Layers children on top of each other, often used with Positioned.

Understanding these is key to building any Flutter UI!

คำถามที่พบบ่อย

บทเรียน “วิดเจ็ตการจัดวางพื้นฐาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “วิดเจ็ตการจัดวางพื้นฐาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Flutter Mobile Development ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Flutter Mobile Development มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “วิดเจ็ตการจัดวางพื้นฐาน”

เชี่ยวชาญวิดเจ็ตการจัดวางที่จำเป็น เช่น Row, Column, Container และ Stack เพื่อสร้างส่วนติดต่อผู้ใช้ที่เป็นระเบียบและปรับตามขนาดหน้าจอได้ คุณปฏิบัติ Flutter Mobile Development ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Flutter Mobile Development หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Flutter Mobile Development บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “วิดเจ็ตการจัดวางพื้นฐาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Flutter Mobile Development นี้ได้ไหม

ได้ บทเรียน Flutter Mobile Development ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. วิดเจ็ต Stateless และ Stateful
  2. วิดเจ็ตการจัดวางพื้นฐาน
  3. องค์ประกอบส่วนติดต่อผู้ใช้แบบโต้ตอบ
  4. การสร้างรายการเลื่อนได้ด้วย ListView
← กลับไปที่ Flutter Mobile Development