Tổng quan về Flutter [Phụ lục Flutter] [Tự học Flutter]

1. Tổng quan về Flutter

Flutter là gì? Flutter là một bộ công cụ giao diện người dùng (UI framework) mã nguồn mở do Google tạo ra và ra mắt phiên bản ổn định vào năm 2018. Đặc điểm "ăn tiền" nhất của Flutter là khả năng phát triển ứng dụng đa nền tảng chỉ với một mã nguồn (single codebase). Điều này có nghĩa là các bạn chỉ cần viết code một lần bằng ngôn ngữ Dart, ứng dụng có thể biên dịch và chạy mượt mà trên cả Android, iOS, Web, Windows, macOS và Linux.

Tổng quan về Flutter [Phụ lục Flutter] [Tự học Flutter]


Hiệu năng ấn tượng: Khác với nhiều framework đa nền tảng cũ, code Flutter được biên dịch trực tiếp ra mã máy (ARM hoặc Intel) và không cần thông qua các "cầu nối" (bridge) làm chậm ứng dụng. Nhờ đó, ứng dụng Flutter mang lại hiệu năng cao và cảm giác mượt mà y hệt như ứng dụng thuần (native app). Rất nhiều "ông lớn" công nghệ đang sử dụng Flutter như chính Google (Google Pay), Alibaba, BMW, Toyota.

2. Cấu trúc của Flutter

Để hiểu tại sao Flutter lại mạnh mẽ đến vậy, các bạn cần nắm được cấu trúc phân tầng (layered architecture) của nó. Cấu trúc này được chia làm 3 lớp chính từ dưới lên trên:

  • Lớp Embedder (Nền tảng): Đây là lớp thấp nhất, giao tiếp trực tiếp với hệ điều hành (Android, iOS, Web...). Nó quản lý các tác vụ mức hệ thống như luồng (thread), hiển thị đồ họa, và đầu vào từ người dùng.
  • Lớp Engine (Động cơ C/C++): Là "trái tim" của Flutter. Lớp này hỗ trợ các nguyên thủy cốt lõi để vẽ đồ họa (sử dụng engine Skia hoặc Impeller), xử lý văn bản, mạng và biên dịch mã Dart. Thay vì dùng các thành phần giao diện có sẵn của điện thoại, Flutter tự vẽ từng pixel lên màn hình bằng engine này, giúp giao diện nhất quán trên mọi thiết bị.
  • Lớp Framework (Dart): Đây là lớp trên cùng và là nơi các bạn sẽ tương tác 100% thời gian khi code. Lớp này cung cấp các nền tảng (Foundation), Animation, Painting và đặc biệt là hệ thống Widgets.

Quy tắc vàng trong Flutter: "Mọi thứ đều là Widget" Trong Flutter, UI được xây dựng theo hướng khai báo (declarative). Các bạn sẽ thiết kế giao diện bằng cách lắp ráp các "khối lego" gọi là Widget. Một nút bấm, một đoạn văn bản, một căn lề, hay thậm chí toàn bộ ứng dụng đều là các Widget lồng vào nhau tạo thành một Cây Widget (Widget Tree).

3. Các bước tạo ứng dụng với Flutter

Bây giờ, chúng ta hãy xắn tay áo lên và tạo ứng dụng đầu tiên bằng Android Studio nhé!

  • Bước 1: Khởi tạo Project
    • Mở Android Studio, chọn New Flutter Project (hoặc File -> New -> New Flutter Project).
    • Ở phần Flutter SDK path, trỏ đường dẫn đến thư mục các bạn đã giải nén Flutter (Ví dụ: C:\src\flutter).
    • Đặt tên project ở ô Project name (lưu ý viết chữ thường và dùng dấu gạch dưới, VD: hello_flutter), sau đó nhấn Create/Finish.
  • Bước 2: Hiểu cấu trúc thư mục
    • Khi project được tạo ra, các bạn sẽ thấy rất nhiều thư mục. Hãy ghi nhớ: 90% thời gian các bạn sẽ chỉ làm việc trong thư mục lib/.
    • Tìm và mở file lib/main.dart. Đây là điểm bắt đầu (entry point) của mọi ứng dụng Flutter.
  • Bước 3: Viết đoạn code đầu tiên
    • Các bạn hãy xóa toàn bộ code mẫu có sẵn trong file main.dart và gõ lại đoạn code sau:
import 'package:flutter/material.dart';

// Hàm main là nơi ứng dụng bắt đầu chạy
void main() {
  runApp(const MyApp());
}

// Widget cao nhất của ứng dụng
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text(
            'Hello World - Chào lớp mình nhé!',
            style: TextStyle(fontSize: 24, color: Colors.blue),
          ),
        ),
      ),
    );
  }
}
  • Bước 4: Chạy ứng dụng
    • Các bạn chọn một máy ảo Android (Emulator) đã cài đặt sẵn trên thanh công cụ, hoặc chạy trực tiếp trên trình duyệt Chrome (Web).
    • Nhấn nút Run (biểu tượng hình tam giác màu xanh).
    • Đợi một lát để phần mềm biên dịch.

📝 Bài tập củng cố

Để đảm bảo các bạn đã nắm bắt được nội dung bài học, hãy hoàn thành bài tập nhỏ sau đây:

Yêu cầu:

  1. Tạo một Flutter project mới với tên bai_tap_1.
  2. Chỉnh sửa file lib/main.dart sao cho màn hình không hiển thị "Hello World" nữa, mà thay vào đó hiển thị nội dung: "Xin chào, tôi tên là [Tên đầy đủ của bạn] - Mã SV: [Mã sinh viên của bạn]".
  3. Chỉnh sửa thuộc tính style của Text để đổi màu chữ thành màu đỏ (Colors.red) và cỡ chữ (fontSize) là 30.
  4. Chạy ứng dụng trên máy ảo hoặc Chrome, chụp màn hình kết quả và nộp lại lên hệ thống.


Categories

AI (13) AI programming (1) ASP (1) Android (32) App Honeygain (4) Assembly (17) Biểu diễn thuật toán (1) Bubble-Sort (1) Bài giảng (2) Bài giảng lập trình C và Cpp (21) Bài viết hay (108) Bản đồ tư duy (1) C Plus Plus (103) C/C++ (16) CDSL phân tán (1) CSS (2) Cơ sở dữ liệu (11) Danh ngôn lập trình (1) Datamining (4) Genetic Algorithm (1) Giáo trình (2) Giải thuật tiến hóa - thuật toán di truyền (2) Google App Engine (2) Góc học tập (34) HTML (1) Hướng dẫn kiếm tiền online tại nhà (6) Hướng dẫn sử dụng Emu8086 (1) Học lập trình (131) Học lập trình C và CPP qua ví dụ (17) Java (54) Java Căn bản (6) JavaScript (5) Kỹ năng đọc hiệu quả (1) Kỹ thuật lập trình (16) Kỹ thuật đồ họa máy tính (10) Lý thuyết Cơ sở dữ liệu (2) Lý thuyết đồ thị (11) Lập trình Cơ sở dữ liệu (2) Lập trình Python (2) Lập trình căn bản (8) Lập trình hướng đối tượng với Java (7) Lập trình mobile (9) Lập trình mạng (6) Lập trình nhúng (1) Lập trình trí tuệ nhân tạo (2) ML (1) MMO (6) MS Access (1) Machine learning (2) Mạng máy tính (1) Mẹo tìm kiếm trên Google (1) Nghiên cứu khoa học (3) Ngôn ngữ lập trình (2) Những cuốn sách hay mà bạn nên đọc khi còn trẻ (1) Pascal (3) Phương pháp tính toán tối ưu (2) Phương pháp tối ưu (2) Quản lý dự án CNTT (1) SEO (1) SQL (5) Swift (9) Sách hay (4) Thiết kế Web (2) Thuật toán (51) Thuật toán Sắp Xếp -Sort (9) Thuật toán Tìm kiếm - Search (5) Thuật toán di truyền (4) Thực hành Android (2) Tin học văn phòng (5) Tiện ích máy tính (3) Toán rời rạc (13) Treo máy kiếm tiền (3) Trí tuệ nhân tạo (18) Tài liệu tham khảo (4) Tìm hiểu Blockchain (2) Tự học Android (3) Tự học Android qua ví dụ (1) Tự học JavaScript (1) Tự học lập trình (9) Tự học lập trình Android (17) Tự học lập trình C và CPP (14) Tự học lập trình java qua các ví dụ (8) XML (1) blockchain (2) bài giảng quản lý dự án CNTT (1) bài tập java (3) bài tập lập trình (4) cấu trúc dữ liệu giải thuật (15) hướng dẫn viết báo (1) học lập trình Java (11) học máy (5) hợp ngữ (8) lập trình viên (3) phưng pháp đơn hình (2) thuật toán AI (2) tài liệu CNTT miễn phí (3) tính toán tối ưu (1) tự học lập trình iOS (8) tự học lập trình python (1) ví dụ Assembly (1) Đại số gia tử và ứng dụng (1) Đồ họa (4)