Nguồn gốc của Flutter
Flutter là một framework lập trình mạnh mẽ để phát triển ứng dụng di động đa nền tảng, được khởi xướng từ những nỗ lực của nhóm Chrome tại Google nhằm cải thiện tốc độ tải trang Eric Seidel, người sáng lập dự án Flutter, đã chia sẻ trong một cuộc phỏng vấn rằng nhóm của anh đã nhận ra rằng mã nguồn của Chrome gây cản trở tốc độ tải trang và quyết định loại bỏ những phần không cần thiết để tối ưu hóa hiệu suất Kết quả cho thấy tiềm năng lớn trong việc phát triển một framework giao diện người dùng đa nền tảng nhanh chóng Tuy nhiên, để mang lại công cụ này cho các lập trình viên một cách nhanh chóng, nhóm đã nhận thấy cần phải xây dựng một giải pháp không dựa trên web, do tốc độ cập nhật tiêu chuẩn của web khá chậm Chính vì vậy, Flutter đã ra đời như một giải pháp tối ưu cho lập trình viên.
Phiên bản đầu tiên của Flutter, mang tên "Sky", được giới thiệu tại hội nghị nhà phát triển Dart 2015 và chạy trên hệ điều hành Android, với mục tiêu đạt 120 khung hình trên giây Tại hội nghị Google Developer Days ở Thượng Hải, Google đã công bố Flutter Release Preview 2, phiên bản lớn cuối cùng trước khi phát hành Flutter 1.0 Ngày 4 tháng 12 năm 2018, Flutter 1.0 chính thức ra mắt tại sự kiện Flutter Live, đánh dấu phiên bản "ổn định" đầu tiên của khung ứng dụng này.
Tăng trưởng và Tập trung vào di động
Khi ra mắt lần đầu, Flutter được phát triển dựa trên mã nguồn của Chrome, với nhóm phát triển khám phá ra một định dạng tương tự như HTML Họ đã nỗ lực tạo ra một ngôn ngữ HTML có khả năng chạy nhanh và hiệu quả.
Nhóm Flutter nhận thấy cần phải thoát khỏi HTML và tập trung vào việc cải thiện hiệu quả và sự thoải mái trong phát triển giao diện người dùng từ góc độ lập trình viên.
Nhóm đã tái khởi động dự án Flutter, bắt đầu phát triển từ JavaScript để tạo ra các giải pháp phần tử tùy chỉnh và thực hiện thao tác với DOM.
7 Điều đó nghe có vẻ không hoàn toàn đúng, vì vậy sau đó họ đã cố gắng render mọi thứ thành phần tử canvas
Sau đó, nhóm nghiên cứu vì nhiều lý do đã chuyển từ JavaScript sang Dart và cũng chuyển sang sử dụng mẫu kiểu reactive, thay vì mẫu object-observe
Nhóm Flutter tại Google đã sớm kết nối với nhóm Fuchsia, điều này giúp họ thu thập ý kiến về dự án Với tầm nhìn lớn về tương lai của Flutter, Eric nhớ lại những câu hỏi mà nhóm đã đặt ra.
Tại sao không xây dựng lại việc phát triển có thể dung cho bất kỳ màn hình nào?
Nhóm cho rằng nên tập trung vào các nền tảng mang lại giá trị cao nhất cho đông đảo lập trình viên trong thời gian ngắn Việc cải thiện trải nghiệm và năng suất lập trình di động cho iOS và Android là lựa chọn hợp lý.
Ban đầu, nhóm đã tập trung vào iOS và dành thời gian giao tiếp với khách hàng, từ đó nhận ra tầm quan trọng của việc chuyển hướng sang Google để tìm kiếm khách hàng đầu tiên Qua các cuộc trò chuyện với lập trình viên, họ nhận thấy rằng phần 'Trải nghiệm dành cho lập trình viên' mang lại giá trị vượt trội, thậm chí còn hơn cả các yếu tố liên quan đến giao diện người dùng và nền tảng giao diện tùy chỉnh.
Vẽ pixel trực tiếp trên màn hình là mục tiêu chính của tất cả các framework UI, và Flutter nổi bật hơn các framework nền tảng chéo khác nhờ vào việc sử dụng OpenGL để hiển thị Trong khi các phương pháp khác hoạt động ở mức độ trừu tượng cao hơn và tương tác với các framework UI của hệ thống cơ bản, Flutter giảm thiểu sự giao tiếp giữa mã cơ bản và mã Flutter Điều này giúp tránh được phần lớn sự chậm chạp thường gặp do kết nối giữa các ngôn ngữ, theo nhận định của Eric.
Nhược điểm lớn nhất là bạn không thể dựa vào các hiệu ứng vật lý hoạt hình tích hợp sẵn trong iOS và Android, vì mỗi nền tảng có cách tiếp cận riêng đối với việc phản hồi của giao diện người dùng khi cuộn, tải trang, và hơn thế nữa Như Eric đã chia sẻ, việc tự viết mã cho các tương tác vật lý là một thách thức nhưng cần thiết để đáp ứng kỳ vọng của người dùng về trải nghiệm tương tác trên từng nền tảng.
Flutter hoạt động trên một luồng riêng biệt, tách biệt với các thành phần cụ thể của hệ điều hành ứng dụng Giao tiếp giữa mã Dart và mã hệ điều hành được thực hiện thông qua JSON đơn giản.
Flutter sử dụng thư viện đồ họa Skia, tương tự như trên Chrome và Android, để hiển thị đồ họa trên màn hình Đối với việc bố trí văn bản, Flutter áp dụng mã nguồn đã được phát triển cho Android.
Từ góc độ software stack, Flutter có thể được coi là bao gồm các lớp sau:
Lớp thấp nhất trong kiến trúc hệ thống là lớp runtime, được phát triển bằng C++ Lớp này giao tiếp với hệ điều hành thông qua các phương thức hạn chế, bao gồm OpenGL, API truy cập, tệp tin và mạng.
IO, v.v … Phía trên cùng của lớp này là API chuyển sang mã Dart
+ Một lớp liên kết chủ yếu là cho thiết lập ban đầu
Lớp render là một mô hình view cơ bản, chịu trách nhiệm cho các đối tượng tồn tại lâu dài Nó đảm nhiệm các công việc quan trọng như bố cục, vẽ, chỉnh sửa văn bản và xử lý cử chỉ.
Một lớp widget trong Flutter bao gồm các thành phần có thời gian tồn tại ngắn, mô tả giao diện người dùng trong một framework duy nhất Flutter sử dụng mô hình lập trình reactive, cho phép giao diện được tái tạo mỗi khi có sự thay đổi về trạng thái.
+ Một lớp thể hiện thẩm mỹ thiết kế cụ thể, ví dụ Thiết kế Layout cho Android
Tại sao lại là Dart?
Một số khía cạnh của Dart khiến nó phù hợp với Flutter là:
Flutter sở hữu một garbage collector thế hệ nhanh chóng, điều này đặc biệt hữu ích trong mô hình lập trình reactive, nơi các đối tượng giao diện người dùng được tạo và hủy một cách nhanh chóng.
+ Trình biên dịch trước thời hạn của Dart cho phép biên dịch trực tiếp mã Điều này cho phép khởi động nhanh và đạt hiệu suất phù hợp
+ Dart tập trung vào trải nghiệm tốt cho lập trình viên
+ Dart có thuật toán tree shaking – chỉ các phần của framework Flutter đã được sử dụng mới được đưa vào ứng dụng cuối cùng
4 Trải nghiệm của lập trình viên
Cải thiện trải nghiệm lập trình viên là yếu tố quan trọng trong phát triển Flutter, với nhiều công cụ và tính năng được thiết kế để hỗ trợ, điển hình là tính năng hot reload.
Trải nghiệm của lập trình viên
Cải thiện trải nghiệm lập trình viên là yếu tố then chốt trong phát triển Flutter, với nhiều công cụ và tính năng được thiết kế để hỗ trợ điều này, điển hình là tính năng hot reload.
Chúng tôi muốn cải thiện trải nghiệm của lập trình viên, và Hot Reload là một yếu tố quan trọng trong nỗ lực đó.
Với tính năng hot reload, khi bạn viết và lưu mã Dart, ứng dụng trên trình giả lập hoặc điện thoại sẽ được cập nhật ngay lập tức để phản ánh những thay đổi đó.
Flutter Doctor là một công cụ hữu ích trong lập trình Flutter, giúp chẩn đoán tình trạng hệ thống của bạn và tự động cài đặt các thành phần phụ thuộc còn thiếu.
Các IDE chính được hỗ trợ là:
+ Visual Studio Code a Plugin và package
Một trong những nguyên tắc cơ bản của Flutter là mọi thứ mà phần cứng có khả năng thực hiện, bạn đều có thể thực hiện trong Flutter Điều này mở ra khả năng sáng tạo không giới hạn cho các nhà phát triển, cho phép họ xây dựng ứng dụng phong phú và đa dạng.
Các thư viện cụ thể của nền tảng Flutter đang ngày càng phong phú, với bộ sưu tập các gói đa dạng Hầu hết lập trình viên có thể dễ dàng tìm thấy những tài nguyên cần thiết trên trang web [pub.dartlang.org/flutter](https://pub.dartlang.org/flutter) Điều này giúp việc quản lý và phát triển ứng dụng trở nên thuận tiện hơn.
Về các nguyên tắc hướng dẫn cách vận hành nhóm, Eric cho biết mức độ gắn kết với người dùng là chìa khóa
Một số điều đặc trưng cho phương pháp quản lý là:
+ Giúp mọi người thành công
+ Che chắn mọi người khỏi phiền nhiễu
+ Đảm bảo các thành viên trong nhóm có được các tài nguyên họ cần + Tập trung vào các tính năng tạo giá trị thực sự
+ Standups mỗi ngày (5 phút) c Lợi ích của Flutter
Dưới đây là một số tính năng nổi bật của Flutter mà bạn nên xem xét khi quyết định sử dụng: Flutter hỗ trợ phát triển ứng dụng đa nền tảng với hiệu suất cao, cung cấp giao diện người dùng đẹp mắt và dễ dàng tùy chỉnh Nó cũng có một cộng đồng lớn và tài liệu phong phú, giúp việc học hỏi và phát triển trở nên thuận lợi hơn Hơn nữa, Flutter cho phép phát triển ứng dụng nhanh chóng với tính năng hot reload, giúp tiết kiệm thời gian trong quá trình phát triển.
Flutter giúp tăng năng suất phát triển ứng dụng nhờ khả năng đa nền tảng, cho phép bạn sử dụng một cơ sở mã chung cho cả iOS và Android Điều này không chỉ tiết kiệm thời gian mà còn giảm thiểu nguồn lực cần thiết cho quá trình phát triển.
Dart biên dịch thành mã native mà không cần truy cập các widget OEM, giúp giảm thiểu giao tiếp giữa ứng dụng và nền tảng Flutter, với vai trò là SDK di động duy nhất cung cấp các chế độ xem reactive mà không cần cầu nối JavaScript, mang lại hiệu suất tuyệt vời Nhờ đó, thời gian khởi động ứng dụng nhanh hơn và các vấn đề về hiệu suất được giảm thiểu.
Flutter phát triển nhanh chóng và dễ dàng nhờ tính năng Hot Reload, cho phép người dùng xem ngay lập tức các thay đổi trong mã trên cả trình giả lập và thiết bị thật Chỉ trong chưa đầy một giây, mã được cập nhật mà không cần khởi động lại ứng dụng, điều này rất hữu ích cho việc xây dựng giao diện, thêm tính năng và sửa lỗi.
Lập trình với Flutter rất dễ dàng đến mức bạn không cần có kiến thức lập trình trước Dù kinh nghiệm với các ngôn ngữ hướng đối tượng sẽ hữu ích, nhưng ngay cả những người chưa từng lập trình cũng có thể tạo ra ứng dụng Flutter Cách tốt nhất để xác minh điều này là tự mình trải nghiệm.
Khả năng tương thích của các widget là ưu điểm nổi bật, vì chúng là thành phần của ứng dụng thay vì nền tảng, giúp giảm thiểu hoặc loại bỏ sự cố tương thích trên các phiên bản hệ điều hành khác nhau Điều này đồng nghĩa với việc bạn sẽ tiết kiệm được thời gian cho việc kiểm tra.
Flutter và Dart là hai công nghệ nguồn mở miễn phí, cung cấp tài liệu hỗ trợ phong phú và có một cộng đồng lớn sẵn sàng giúp đỡ người dùng trong việc giải quyết các vấn đề phát sinh.