Tạo giao diện Flutter đầu tiên – Hello Widgets!

0 0 0

Người đăng: Coder Tập Sự

Theo Viblo Asia

🎉 Giới thiệu nhanh

Tiếp tục hành trình học Flutter, hôm nay chúng ta bắt đầu làm quen với việc tạo giao diện bằng Flutter Widgets.

Nếu hôm qua là nền tảng Dart thì hôm nay chúng ta chính thức bước vào thế giới UI của Flutter rồi 😆

🎯 Mục tiêu hôm nay

  • Cài đặt ứng dụng Flutter cơ bản
  • Làm quen với các Widget quan trọng đầu tiên: Scaffold, AppBar, Text, Column, Center
  • Hiển thị văn bản "Hello Flutter!" giữa màn hình

🧱 Widget là gì?

Trước khi bước vào việc xây dựng app đầu tiên và làm quen với một vài widget cơ bản, chúng ta cùng tìm hiểu xem "widget" là gì trong Flutter nhé.

Trong Flutter, giao diện của ứng dụng được tạo nên hoàn toàn bằng các widget.

Nói đơn giản, widget giống như những "miếng lego" UI – mỗi phần tử giao diện (Button, Text, Image...) đều là một widget.

Ví dụ:

  • Một dòng chữ là Text
  • Căn giữa nội dung là Center
  • Scaffold giống như bộ khung màn hình – nơi chúng ta đặt tiêu đề, nội dung và các nút
  • Thanh tiêu đề là AppBar

Các widget có thể lồng vào nhau, tạo nên bố cục phức tạp một cách dễ dàng và trực quan.

Trong Flutter, có hai loại widget chính:

  • StatelessWidget: không thay đổi khi chạy (ví dụ: chỉ hiển thị văn bản tĩnh)
  • StatefulWidget: có thể thay đổi khi người dùng tương tác (ví dụ: bấm nút để đổi màu, hiển thị số đếm...)

Để tìm hiểu rõ hơn về hai loại widget này thì chúng ta sẽ cùng nhau tìm hiểu ở bài tiếp theo nha 🥰🥰🥰

🏆️ App Flutter đầu tiên trông thế nào?

Dưới đây là đoạn code Flutter đơn giản nhất chúng ta có thể chạy thử trên DartPad Flutter:

import 'package:flutter/material.dart'; void main() { runApp(MyApp());
} class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Demo đầu tiên', home: Scaffold( appBar: AppBar( title: Text('Chào Flutter!'), ), body: Center( child: Text( 'Hello Flutter!', style: TextStyle(fontSize: 24), ), ), ), ); }
}

Giải thích từng phần:

Thành phần Vai trò
runApp() Hàm khởi động ứng dụng Flutter
MaterialApp Widget bao toàn bộ app, giống như khung chính
Scaffold Cung cấp bố cục cơ bản: AppBar, Body, Floating Button...
AppBar Thanh tiêu đề của ứng dụng
Center Căn giữa nội dung
Text Hiển thị dòng chữ
TextStyle Tùy chỉnh chữ: font, màu, kích thước...

Hình ảnh của app đầu tiên nè

image.png

✨ Thử custom giao diện một chút nhỉ?

Đổi màu thanh AppBar

appBar: AppBar( title: Text('Chào Flutter!'), backgroundColor: Colors.deepPurple,
),

Thêm nhiều dòng chữ bằng Column

body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('Hello Flutter!', style: TextStyle(fontSize: 24)), SizedBox(height: 10), Text('Lần đầu tạo UI bằng widget 🛠️'), ], ),
),

Sau khi thay đổi màu của thanh AppBar và thêm nội dung trong body thì chúng ta có giao diện như sau

image.png

🤔 Vấn đề đã gặp và cách xử lý

Trong bài hôm nay, mình đã tạo được app Flutter đầu tiên. Tuy nhiên lúc đầu cũng gặp vài lỗi nhỏ khiến giao diện chưa hiển thị đúng ý mình. Mình ghi lại ở đây để nếu chúng ta cũng gặp thì biết cách xử lý liền nhé 😄

❗ Giao diện không nằm giữa màn hình

Lúc đầu, mình quên không sử dụng CentermainAxisAlignment: MainAxisAlignment.center, nên nội dung bị đẩy lên phía trên hoàn toàn, không cân đối. Sau khi thêm Center và chỉnh mainAxisAlignment: MainAxisAlignment.center, cuối cùng mình cũng đã căn giữa được nội dung như ý.

❗ Các dòng chữ bị dính nhau nhìn hơi rối

Trong HTML, để tạo khoảng cách giữa các dòng, chúng ta hay dùng margin. Còn trong Flutter, thay vì dùng margin, chúng ta dùng SizedBox(height: 10), chỉ cần thế là xong, dễ quá đúng không? 😄

Kết luận

Qua bài học ngày hôm nay, mình đã tìm hiểu về Flutter Widgets và cách sử dụng chúng để xây dựng giao diện cho ứng dụng. Ngày mai, mình sẽ tiếp tục tìm hiểu về các widget nâng cao hơn hoặc bắt đầu làm quen với việc tạo giao diện phức tạp hơn 😆😆😆

Lời cuối bài, cảm ơn mọi người đã đọc đến đây! Vì mình đang tìm hiểu Flutter nên có thể sẽ có sai sót, rất mong mọi người góp ý để mình cải thiện hơn. Nếu bạn cũng đang tìm hiểu Flutter, mình chúc các bạn kiên trì và vững bước mỗi ngày. Hẹn gặp lại mọi người ở bài viết ngày mai nhé!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 298

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

1 1 354

- vừa được xem lúc

Dart Cheat Sheet - Full bộ "bỏ túi" các syntax trong ngôn ngữ Dart

Dart là một ngôn ngữ mới dùng cho cả Mobile và Web với Flutter Framework, thậm chí dùng cho Backend. Để giúp mọi người dễ dàng nắm bắt ngôn ngữ này hơn, 200lab Education đã tổng hợp thành bộ "bí tịch" dưới đây để tra cứu nhanh, tăng tốc phát triển phần mềm.

0 0 53

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 2: StatefulWidget vs StatelessWidget. Khi nào thì cần sử dụng cái nào?

Lời mở đầu. Ở bài trước, chúng ta đã dừng lại ở một kết thúc mở.

0 0 101

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 4: Lột trần InheritedWidget

Lời mở đầu. Trong đoạn kết của phần 2, chúng ta đã đối mặt với 1 bài toán: Làm thế nào để truyền data từ một widget cha nào đó xuống thẳng widget chắt mà không phải sử dụng constructor để truyền xuống

0 0 70

- vừa được xem lúc

Chinh phục RxDart Flutter trong 3 nốt nhạc. Nốt thứ nhất: Stream và giải thích các thuật ngữ

Lời mở đầu. Mình viết series này với mục đích chia sẻ kiến thức về RxDart trong Flutter.

0 0 80