Chào các bạn đến với chương: Ngôn ngữ lập trình Dart Flutter. Đây là một chương khá là đặc biệt. Đối với những bạn biết về lập trình thì không khó để kiểm soát ngoài một số điểm khác biệt so với ngôn ngữ khác, còn nếu bạn chưa thành thạo lập trình thì không phải lo lắng nhé, tôi sẽ dẫn giải chi tiết, có các chẳng hạn như và bài tập đi kèm.
Khái niệm ngôn ngữ lập trình Dart Flutter

Ngôn ngữ Dart
- Là ngôn ngữ lập trình đơn giản, dễ hiểu và dễ đến gần hơn.
- Là ngôn ngữ lập trình được sử dụng để build lên Flutter Framework.
- Nó xuất hiện vào năm 2011, hướng tới việc tạo ra các ứng dụng đa nền tảng – Website, mobile, desktop và IoT.
- Phiên bản hiện tại khi mình viết bài đăng này là 2.8 và nó khác là ổn định trong việc lập trình.
- Là ngôn ngữ tĩnh, theo hướng đối tượng (OOP), functional programming và lexical scoped.
- Nó như 1 sự kết hợp giữa Java và JavaScript nên khi học nó nếu ai đã có nền tảng 1 trong 2 ngôn ngữ kia thì lúc đến gần hơn sẽ khá dễ.
Tại sao lại dùng ngôn ngữ lập trình Dart Flutter?
Như đã nói ở trên, Dart được tăng trưởng bởi Google, và Flutter cũng như không. Google muốn viết (phát triển) một ngôn ngữ mà nó cải tiến hơn Javascript và giúp đỡ cả 2 bí quyết biên dịch là Just In Time (JIT) và Ahead Of Time (AOT):
- Ahead Of Time (AOT): Với AOT thì trình biên chuyển dịch ngôn ngữ Dart thẳng sang Native Code giúp hiệu suất tối ưu có khả năng (tức là khi chạy chương trình, nó sẽ biên dịch từ đầu đến cuối)
- Just In Time (JIT): Còn với JIT cho phép hot reloading công việc, giúp phát triển mặt hàng nhanh và tiện dụng hơn (được hiểu như việc debug trong ngôn ngữ khác là debug hàm nào chạy hàm đấy thì ở đây nó sẽ viết đến đâu biên dịch ngay đến đấy)
>>>Xem thêm: Mã UTM code là gì? Cách đo lường hiệu quả chiến dịch quảng cáo
Để học Flutter, chúng ta phải học Dart
– Dart là một ngôn ngữ thuần OOP (hướng đối tượng)
– Ngôn ngữ Dart giông giống Java, là cải tiến lên từ Javascript, cũng là hệ C có thể cú pháp tương tự nhau (tương tự cả C#)
Để nắm được ngôn ngữ Dart, chúng ta phải làm quen và ghi nhớ một số CONCEPTS (khái niệm) quan trọng:
- Do Dart là ngô ngữ thuần OOP nên tất cả những thứ bạn gán cho biến đều là object, mọi object đều là instance (thể hiện) của một class.
- Ngay cả số, method (hàm) và null cũng đều là object. Tất cả các object đều kế thừa từ Object class.
- Type của 1 variable (biến) là optional bởi vì Dart có thể tự suy ra type dựa trên giá trị truyền vào cho biến.
- Biến number được hiểu là kiểu int. Khi mà bạn muốn khai báo 1 variable mà type của nó đừng nên chọn lựa, hãy dùng type dynamic
- Như các ngôn ngữ khác, Dart hỗ trợ generic type, ví dụ như List (1 danh sách kiểu số nguyên) hoặc List (1 danh sách các object mà type không chọn lựa, Dart có thể chấp nhận mọi loại type).
Flutter Framework

Flutter là 1 mobile SDK do Google tăng trưởng, nó giúp người sử dụng có khả năng tạo ra được 1 ứng dụng chạy trên cả iOS và Android. Là một Cross-flatform framework nhưng khác với các Cross-flatform hiện tai, Flutter không thông qua bridge, mà nó sẽ chạy engine render riêng (viết bằng C++) và sử dụng Flutter framework (viết bằng Dart) để giao tiếp với các service. Cả 2 bộ này có thể được đóng gói cùng ứng dụng và thông qua SDK nó có khả năng chạy trên đa nền tảng. Kì vọng mà team phát triển Flutter nhắm đến là có thể chạy trên đa nền tảng, Flutter ngoài chạy trên mobile thì còn có khả năng chạy trên nền web thông qua dự án mang tên Hummingbird, chạy trên các thiết bị IoT và cả desktop.
Đặc điểm nhấn
- Fast Development: Tíng năng Hot Reload hoạt động trong milliseconds để hiện thị giao diện tới bạn. Dùng tập hợp các widget có khả năng customizable để tạo ra bố cụ và giao diện trong vài phút. Bên cạnh đó Hot Reload còn hỗ trợ bạn thêm các chức năng, fix bug tiết kiệm thời gian hơn mà không luôn phải thông qua máy ảo, máy android hoặc iOS.
- Expressive and Flexible UI: có không hề ít các thành phần để tạo ra giao diện của Flutter vô cùng xinh xắn theo cách điệu Material Design và Cupertino, hỗ trợ nhiều các APIs chuyển động, smooth scrolling…
- Native Performance: Các widget của fluter kết hợp các sự khác biệt của các nền tảng chẳng hạn như như scrolling, navigation, icons, font để bổ sung một hiệu năng tốt nhất tới iOS và Android.
Nhược điểm
- Bộ render UI được nhóm tăng trưởng gần như viết lại, không liên quan tới UI đã có sẵn của Framework native, dẫn đến memory sử dụng khá là nhiều. Thêm nữa, các UI không đi chung với OS, mà được phát triển riêng, có nghĩa là cùng 1 phiên bản Flutter khi tạo ra áp dụng cho iOS thì iOS 8.x -> 12.x đều y chang nhau, tương tự như với Android. Tuy nhiên UI của Android thì tất nhiên khác với iOS.
- Phải học thêm ngôn ngữ DART: lập trình viên biết về DART rất ít, cũng có nguy cơ là học xong DART sẽ dính liền luôn với DART ở mảng tăng trưởng ứng dụng mobile. Chứ không uyển chuyển như JS hay Python có khả năng nhảy qua lại giữa front, back hay AI…
- Mô hình dữ liệu mới: bloc pattern, DART Streaming; nếu như đã quen với Redux khi làm tăng trưởng React Native, bạn sẽ mất thời gian để học thêm mô hình dữ liệu trong Flutter, mặc dù nó không khó.
Thiết lập Flutter
- Như mình đã nói ở trên, thì để thực hành với ngôn ngữ Dart thì VSCode là sự chọn lựa ổn tuy nhiên với ý kiến cá nhân của mình và với các bạn lập trình java adroid thì tạo ứng dụng với Flutter với Android Studio lại là chọn lựa tuyệt vời.
- Đầu tiên các bạn nên download android studio
- Tiếp đến là các bạn download Flutter SDK. đây là các phiên bản mà Google đã release và hiện tại phiên bản tiên tiến là 1.17.2.
- Sau khi tải về flutter sdk về máy, các bạn giải nén nó vào bất kỳ ổ cứng hoặc thư mục nào đấy mà các bạn mong muốn ( chẳng hạn như : C:\src\flutter, lưu ý sẽ không giải nén vào C:\Program Files\ vì thư mục này cần một quyền truy cập cao).
- Đây là toàn bộ thư mục và file của flutter sdk
>>>Xem thêm: Thụât toán tìm kiếm nhị phân (Binary Search)
Tạm kết

Ở phần này mình đã recommend cho các bạn về một trong những Framework mới cho lập trình đa nền tảng trên mobile. Ở các loạt bài sau mình sẽ demo code về ngôn ngữ dart và tạo 1 ứng dụng Hello World với Flutter Project.
Bài viết trên, ,mình đã giới thiệu qua với các bạn về ngôn ngữ lập trình Dart Flutter. Cảm ơn các bạn đã theo dõi bài viết nhé!
>>Xem thêm: Tổng hợp các loại mã nguồn làm web phổ biến nhất hiện nay
Mỹ Phượng-Tổng hợp
Tham khảo: (baoflutter, viblo,…)