hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Dart Flutter Framework
Applications và Widgets trong Flutter

Applications và Widgets trong Flutter

  • 08-06-2024
  • Toanngo92
  • 0 Comments

Mục lục

  • Tạo một ứng dụng Flutter trong Android Studio
    • Bước 1: Mở Android Studio
    • Bước 2: Tạo Dự Án Flutter
    • Bước 3: Chọn Flutter Application
    • Bước 4: Cấu hình ứng dụng với các chi tiết sau và sau đó nhấp Next:
    • Bước 5: Hoàn thành việc tạo dự án
    • Bước 6: Hoàn thành
  • Các thành phần tự động sinh ra
  • Phần quan trọng của dự án Flutter
  • Cấu trúc mã trong tệp Main.dart
  • Giới thiệu về Widgets trong Flutter và Ứng dụng
  • Các loại Widget trong Flutter
    • Cụ thể theo nền tảng
  • Độc lập với nền tảng / Các Widget Cơ bản
    • Stateful Widgets:
  • Layout Widgets
  • Các Loại Widget Layout
    • Các Widget Bố Trí Chỉ Có Một Widget Con
    • Các Widget Bố Trí Có Nhiều Widget Con

Tạo một ứng dụng Flutter trong Android Studio

Ứng dụng Flutter có thể được tạo bằng nhiều trình soạn thảo mã khác nhau. Cách tốt nhất để làm điều này là thông qua Android Studio. Quá trình từng bước để bắt đầu tạo ứng dụng trong Flutter như sau:

Bước 1: Mở Android Studio

Mở ứng dụng Android Studio từ máy tính của bạn.

Bước 2: Tạo Dự Án Flutter

Để làm điều này, nhấp vào File > New > New Flutter Project.

Bước 3: Chọn Flutter Application

Để làm điều này, nhấp vào Flutter Application trong bảng bên trái và sau đó nhấp Next.

Bước 4: Cấu hình ứng dụng với các chi tiết sau và sau đó nhấp Next:

  1. Tên dự án: flutter_first
  2. Đường dẫn Flutter SDK: <path_to_flutter_sdk> (ví dụ: D:\fluttersdk\flutter)
  3. Vị trí dự án: <path_to_project_folder> (ví dụ: D:\flutterexamples\flutterfirst)
  4. Mô tả: Flutter application

Bước 5: Hoàn thành việc tạo dự án

Nhập tên miền công ty là flutter.demo.com và nhấp Finish.

Bước 6: Hoàn thành

Các thành phần tự động sinh ra

Khi ứng dụng Flutter được tạo, một số tệp và thư mục sẽ được tạo tự động. Tham khảo Hình bên dưới.

Các thành phần tự động sinh ra trong Flutter

Phần quan trọng của dự án Flutter

Trong dự án Flutter, các thư mục sau đây là quan trọng:

a. android: Thư mục này chứa các tệp cụ thể của Android. Ví dụ, tệp manifest, tệp gradle, v.v.

b. ios: Thư mục này chứa các tệp cụ thể của iOS. Ví dụ, tệp podfile, biểu tượng, v.v.

c. lib: Thư mục này chứa tất cả các tệp của dự án. Ví dụ, Assets, Components, v.v.

d. lib/main.dart: Chứa tệp chính khi bắt đầu ứng dụng và thường có một đoạn mã mẫu mặc định.

e. packages: Chứa thông tin về các gói đang được sử dụng trong dự án.

f. .iml: Tệp này về cơ bản là metadata cho IntelliJ IDEA để biết cách cấu trúc dự án và cách sử dụng từng thư mục.

g. pubspec.yaml: Tệp này chứa tất cả các phụ thuộc. Thực hiện lệnh flutter pub get để tải tất cả các gói cần thiết.

h. pubspec.lock: Tệp lock cho phép người dùng kiểm tra gói chống lại các phiên bản tương thích mới nhất của các phụ thuộc của nó.

i. README.md: Tệp README là hướng dẫn cơ bản cung cấp cho các nhà phát triển một minh họa hoàn chỉnh về dự án trên GitHub.

Cấu trúc mã trong tệp Main.dart

Main.dart là tệp chính cho ứng dụng Flutter. Nó được tạo tự động khi tạo ứng dụng Flutter. Đoạn mã 1 cho thấy mã tự động sinh ra cho tệp Main.dart.

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the core of the application
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

Để chạy đoạn mã trên, trước tiên, cần phải kết nối thiết bị. Kết nối với điện thoại di động hoặc tạo trình giả lập bằng Android Studio. Khi thiết bị được kết nối, dự án có thể được thực thi.

Nhấp vào nút Run (nút Play màu xanh lá cây trong thanh menu) trong Android Studio. Console sẽ xuất hiện và sau vài phút, ứng dụng sẽ được tải lên thiết bị. Tham khảo các Hình bên dưới.

Giới thiệu về Widgets trong Flutter và Ứng dụng

Trong Flutter, mọi thứ đều là widget. Nếu người dùng muốn thêm bất kỳ thứ gì, ở bất kỳ đâu và bằng bất kỳ cách nào, thì các widget sẽ được sử dụng.

Mục đích chính là tạo ra một ứng dụng từ các widget và mô tả giao diện của ứng dụng sẽ trông như thế nào với cấu hình và trạng thái hiện tại. Khi có bất kỳ thay đổi nào trong mã, widget sẽ làm mới mô tả của nó bằng cách tìm ra sự khác biệt giữa widget trước đó và widget hiện tại để thực hiện các thay đổi tối thiểu cho việc render trong giao diện người dùng của ứng dụng.

Hình bên dưới mô tả các loại widget trong Flutter.

Các loại Widget trong Flutter

Như đã thấy trong Hình trên, nhóm widget của Flutter có thể được chia thành hai loại dựa trên nền tảng.

Cụ thể theo nền tảng

Dưới loại cụ thể theo nền tảng, một phần lớn phát triển các ứng dụng cho Android và iOS và mỗi nền tảng có hướng dẫn riêng của họ. Đối với Android, nó là hướng dẫn thiết kế Material và widget cụ thể cho Android được gọi là Material Widgets trong Flutter.

Flutter hỗ trợ hai loại thiết kế chính:

  1. Material Design: Đây là bộ quy tắc thiết kế được Google phát triển và chủ yếu được sử dụng cho các ứng dụng Android. Flutter cung cấp một bộ sưu tập phong phú các widget Material Design mà các nhà phát triển có thể sử dụng để tạo ra các giao diện người dùng nhất quán và hấp dẫn cho các ứng dụng Android. Ví dụ: Scaffold, AppBar, FloatingActionButton, ListTile, v.v.
  2. Cupertino Design: Đây là bộ quy tắc thiết kế được Apple phát triển và chủ yếu được sử dụng cho các ứng dụng iOS. Flutter cung cấp các widget Cupertino để tạo ra giao diện người dùng phù hợp với phong cách của các ứng dụng iOS. Ví dụ: CupertinoButton, CupertinoNavigationBar, CupertinoSlider, v.v.

Các widget cụ thể theo nền tảng này giúp các nhà phát triển dễ dàng tạo ra các ứng dụng với giao diện và cảm giác tự nhiên trên từng nền tảng riêng biệt, đồng thời giảm thiểu công việc và chi phí liên quan đến việc duy trì nhiều mã nguồn cho nhiều nền tảng.

Độc lập với nền tảng / Các Widget Cơ bản

Dưới các Widget độc lập với nền tảng, Flutter cung cấp một số lượng lớn các widget cơ bản để tạo ra giao diện người dùng đơn giản hoặc phức tạp một cách độc lập với nền tảng.

  1. Text (Chữ): Để hiển thị văn bản trên giao diện người dùng, có thể tùy chỉnh với các thuộc tính như màu sắc, kích thước, font chữ, v.v.
  2. Image (Hình ảnh): Để hiển thị hình ảnh trên giao diện người dùng từ các nguồn khác nhau như mạng, bộ nhớ cục bộ, hoặc từ tài nguyên được nhúng.
  3. Icon (Biểu tượng): Để hiển thị biểu tượng trên giao diện người dùng từ bộ sưu tập các biểu tượng được cung cấp sẵn hoặc tùy chỉnh.

State Maintenance Widgets (Các Widget Duy trì Trạng thái) Các widget duy trì trạng thái là những widget trong đó các widget được phân loại theo trạng thái. Hình 2.5 cho thấy các widget khác nhau trong Flutter.

Dưới đây là một số ví dụ về các widget cơ bản:

  1. Text (Chữ): Widget này được sử dụng để hiển thị văn bản trên giao diện người dùng.
  2. Image (Hình ảnh): Widget này được sử dụng để hiển thị hình ảnh trên giao diện người dùng từ các nguồn khác nhau như mạng, bộ nhớ cục bộ, hoặc từ tài nguyên được nhúng.
  3. Icon (Biểu tượng): Widget này được sử dụng để hiển thị biểu tượng trên giao diện người dùng từ bộ sưu tập các biểu tượng được cung cấp sẵn hoặc tùy chỉnh.

Hình bên dưới là các Widget trong Flutter

Stateful Widgets:

Các Stateful Widget thay đổi cùng với giao diện người dùng và widget này có một biến được gọi là state. Trong biến này, trạng thái hiện tại của widget được lưu trữ.

Các Stateful Widget có một phương thức gọi là setState là quan trọng để gọi khi muốn thay đổi bất kỳ widget nào. Hãy xem Mẫu mã Code 2 dưới đây:

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(widget.title)),
      body: Center(child: Text('Hello World')),
    );
  }
}

Trong đoạn mã trên:

  • Stateful Widget MyHomePage có một biến state để lưu trữ trạng thái của nó.
  • Có một phương thức setState được gọi để cập nhật trạng thái của widget khi cần thiết.

Layout Widgets

Trong Flutter, một widget có thể chứa một hoặc nhiều widget khác. Flutter đi kèm với một số lượng lớn các widget cùng với các tính năng bố trí để kết hợp nhiều widget thành một. Ví dụ, widget Center giúp đưa widget con vào trung tâm. Dưới đây là một số widget làm việc với các widget bố trí:

  • Container: Đây là một widget phổ biến để chứa nội dung hoặc các widget khác và cung cấp các tính năng bố trí linh hoạt.
  • Column: Sắp xếp các widget con theo chiều dọc.
  • Row: Sắp xếp các widget con theo chiều ngang.
  • Stack: Xếp các widget con lên nhau, cho phép chồng chất các widget lên nhau.
  • Center: Đặt widget con vào trung tâm của màn hình.

Các widget này giúp bạn tổ chức và bố trí các widget trong ứng dụng của bạn một cách dễ dàng và linh hoạt.

Các Loại Widget Layout

Các widget bố trí được phân loại thành hai loại dựa trên số lượng widget con mà chúng có:

Các Widget Bố Trí Chỉ Có Một Widget Con

Các widget bố trí chỉ có một widget con có thể chứa chỉ một widget con. Dưới đây là một số widget trong loại này:

  • Align: Cân chỉnh widget con bên trong chính nó và có thể điều chỉnh kích thước để vừa với kích thước của widget con.
  • AspectRatio: Cố gắng thay đổi kích thước của widget con thành một tỷ lệ khía cạnh nhất định.
  • Baseline: Đặt widget con của nó dựa trên baseline của widget con.
  • Center: Cân chỉnh widget con của nó vào giữa chính nó.
  • ConstrainedBox: Áp đặt các ràng buộc bổ sung cho widget con của nó.
  • Container: Kết hợp các widget vẽ, vị trí và kích thước phổ biến vào một widget tiện ích.
  • CustomSingleChildLayout: Duy trì bố trí của một widget con.
  • Expanded: Mở rộng hàng, cột hoặc widget con uốn cong.
  • FittedBox: Đo lường và điều chỉnh kích thước của widget con dựa trên cách chúng vừa với nhau.
  • FractionallySizedBox: Thay đổi kích thước của widget con thành một phần nhất định của không gian có sẵn tổng cộng.
  • IntrinsicHeight: Điều chỉnh kích thước của widget con của mình cho chiều cao thực tế của widget con.
  • IntrinsicWidth: Điều chỉnh kích thước của widget con của mình cho chiều rộng nội tại của widget con.
  • LimitedBox: Hộp này giới hạn kích thước của chính nó chỉ khi nó không bị giới hạn.
  • Offstage: Giữ widget con ra khỏi cây như nó ở trong cây, mà không vẽ, mà không có widget con sẵn cho sự can thiệp.
  • OverflowBox: Áp đặt các ràng buộc khác nhau cho widget con hơn là nó nhận được từ cha, có thể cho phép widget con tràn ra khỏi cha.
  • Padding: Chèn widget con theo các lề cho trước.
  • SizedBox: Hộp này có một kích thước khung. Nếu được cho vào widget con, hộp này buộc widget con phải có chiều rộng và/hoặc chiều cao đã được chỉ định.
  • SizedOverflowBox: Hộp này có một kích thước nhất định, nhưng chuyển giới hạn thực tế của nó sang widget con của nó, có thể tràn ra.
  • Transform: Áp dụng một biến đổi trước khi vẽ widget con.

Các Widget Bố Trí Có Nhiều Widget Con

Các widget bố trí có nhiều widget con và cách bố trí của chúng là độc đáo. Dưới đây là một số widget đa widget:

  • Column: Sắp xếp danh sách widget con theo hướng dọc.
  • CustomMultiChildLayout: Sử dụng một đại diện để thay đổi kích thước và vị trí của nhiều widget.
  • Flow: Thực thi thuật toán phân phối flow.
  • GridView: Một lưới bao gồm các mẫu ô lặp lại được sắp xếp theo bố cục dọc và ngang. Widget GridView thực thi thành phần này.
  • IndexedStack: Xếp hiển thị chỉ một widget con từ danh sách widget con.
  • LayoutBuilder: Tạo ra một cây các widget có thể phụ thuộc vào kích thước của widget cha.
  • ListBody: Đặt các widget con của nó theo thứ tự liên tục theo trục đã cho và buộc chúng vào trục khác là chiều của cha.
  • ListView: Một danh sách cuộn, là một danh sách các widget trực tiếp. ListView là widget cuộn thông thường được sử dụng. Nó hiển thị các widget một cách tuần tự theo hướng cuộn.
  • Row: Sắp xếp danh sách widget con theo hướng ngang.
  • Stack: Được sử dụng khi muốn đặt nhiều widget con chồng lên nhau một cách dễ dàng, chẳng hạn như chồng một số văn bản và một hình ảnh.
  • Table: Trong widget này, sử dụng thuật toán bố trí bảng cho các widget con.
  • Wrap: Widget này hiển thị các widget con trong nhiều chu kỳ ngang hoặc dọc.

Các loại widget bố trí này cung cấp các công cụ mạnh mẽ để tạo ra giao diện người dùng phức tạp và linh hoạt trong ứng dụng Flutter.

Bài viết liên quan:

REST API trong Flutter
Khái niệm cơ bản về cơ sở dữ liệu với Sqllite và Cơ sở dữ liệu Firebase
FutureBuilder và StreamBuilder trong Flutter
Tạo kiểu và Tạo ứng dụng đáp ứng trong Flutter
Điều Hướng, Định Tuyến và Bộ Điều Khiển trong Flutter
Quản lý trạng thái và Chèn phụ thuộc trong Flutter
Quản lý trạng thái và Chèn phụ thuộc trong Flutter
Xây dựng ứng dụng Flutter bằng cách sử dụng các Multi Child Layout Widgets
Xây dựng Ứng dụng Flutter Sử dụng Single Child Layout Widgets
Xây dựng Ứng dụng Flutter Sử dụng Widget Độc lập Nền tảng
Xây dựng ứng dụng Flutter bằng nền tảng Widget cụ thể
Giới thiệu về Flutter

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Một số cải tiến trong ASP.NET Core, Razor Page, Model Binding, Gabbage collection

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×