Hãy khám phá 10 Dart Array methods trong Flutter. Nắm vững để tối ưu hóa ứng dụng của bạn. Học cách làm việc với mảng trong Dart ngay.
Là một phần trong team phát triển các ứng dụng Flutter cho khách hàng, như bạn biết đấy, tôi phải làm việc với ngôn ngữ Dart rất là nhiều. Các ứng dụng ngày nay thường hiển thị rất nhiều thông tin trên màn hình, đặc biệt là các danh sách sản phẩm dài scroll miết không hết ở các ứng dụng thương mại điện tử, hoặc dễ thấy nhất đó là danh sách các bài viết của các ứng dụng mạng xã hội mà chúng ta hay dùng hằng ngày.
Do đó, khi làm việc với nhiều kiểu dữ liệu List hoặc Array, tôi phát hiện rất nhiều method có sẵn trong ngôn ngữ Dart rất hữu ích và trong bài viết này tôi sẽ chia sẻ cho bạn những method mà tôi rất hay dùng. Tôi đã chọn ra 10 trong số những cái phổ biến nhất mà bạn biết cho ứng dụng tiếp theo của mình. Tôi cũng đã chuẩn bị các đoạn code ví dụ để bạn có thể tự chơi với chúng nhé! Giờ chúng ta sẽ bắt đầu thôi!
Nếu bạn muốn tìm hiểu thêm về ngôn ngữ Dart, hãy xem thêm series tự học ngôn ngữ Dart ở dưới nhé!


1. forEach()
Function này giúp chúng ta lấy ra được từng phần tử ở trong danh sách từ vị trí đầu tiên đến vị trí cuối cùng. Ở ví dụ bên dưới, chúng ta print ra lần lượt các phần tử đó trên terminal.
var fruits = [‘banana’, ‘pineapple’, ‘watermelon’];
fruits.forEach((fruit) => print(fruit)); // => banana pineapple watermelon
2. map()
Function này giúp chúng ta tạo một danh sách mới sau khi chuyển đổi từng element trong một danh sách cho trước. Ở ví dụ bên dưới, chúng ta có được một danh sách mới và gán giá trị đó sang cho biến mappedFruits
.
var mappedFruits = fruits.map((fruit) => ‘I love $fruit’).toList();
print(mappedFruits); // => ['I love banana', ‘I love pineapple’, ‘I love watermelon’]
3. contains()
Function này giúp chúng ta kiểm tra để xác nhận rằng element đó có nằm trong danh sách hay không. Nếu có thì chương trình sẽ trả về true
và ngược lại trả về false
.
var numbers = [1, 3, 2, 5, 4];
print(numbers.contains(2)); // => true
print(numbers.contains(6)); // => false
4. sort()
Sắp xếp các element của danh sách dựa trên yêu cầu được cung cấp. Dưới đây là ví dụ sắp xếp 1 danh sách kiểu int giá trị từ nhỏ đến lớn.
numbers.sort((num1, num2) => num1 - num2); // => [1, 2, 3, 4, 5]
Bonus: Vậy trong trường hợp ngược lại thì sao, easy chỉ cần đảo chỗ lại thôi :v
numbers.sort((num1, num2) => num2 - num1);
5. reduce(), fold()
Nén các element trong danh sách thành một giá trị duy nhất, kết hợp với hàm được đưa vào.
var sum = numbers.reduce((curr, next) => curr + next);
print(sum); // => 15
const initialValue = 10;
var sum2 = numbers.fold(initialValue, (curr, next) => curr + next);
print(sum2); // => 25
6. every()
Xác nhận rằng mọi element đều thỏa mãn test mà chúng ta đưa vào. Do đó, nếu bất kỳ phần tử nào trong danh sách không thoả mãn điều kiện, chương trình sẽ trả về giá trị false
.
List<Map<String, dynamic>> users = [
{ “name”: ‘John’, “age”: 18 },
{ “name”: ‘Jane’, “age”: 21 },
{ “name”: ‘Mary’, “age”: 23 },
];
var is18AndOver = users.every((user) => user[“age”] >= 18);
print(is18AndOver); // => true
var hasNamesWithJ = users.every((user) => user[“name”].startsWith('J'));
print(hasNamesWithJ); // => false
7. where(), firstWhere(), singleWhere()
Trả về collection các element thỏa mãn điều kiện chúng ta đưa vào.
// See #6 for users list
var over21s = users.where((user) => user[“age”] > 21);
print(over21s.length); // => 1
var nameJ = users.firstWhere((user) => user[“name”].startsWith(‘J’), orElse: () => null);
print(nameJ); // => {name: John, age: 18}
var under18s = users.singleWhere((user) => user[“age”] < 18, orElse: () => null);
print(under18s); // => null
firstWhere()
trả về kết quả phù hợp đầu tiên trong danh sách, trong khi singleWhere()
trả về kết quả phù hợp đầu tiên miễn là có đúng một kết quả phù hợp.
8. take(), skip()
Trả về một collection mới khi chứa hoặc bỏ qua các element trong danh sách.
var fiboNumbers = [1, 2, 3, 5, 8, 13, 21];
print(fiboNumbers.take(3).toList()); // => [1, 2, 3]
print(fiboNumbers.skip(5).toList()); // => [13, 21]
print(fiboNumbers.take(3).skip(2).take(1).toList()); // => [3]
9. List.from()
Tạo danh sách mới từ collection đã cho.
var clonedFiboNumbers = List.from(fiboNumbers);
print(‘Cloned list: $clonedFiboNumbers’);
10. expand()
Mở rộng từng element thành không hoặc nhiều element.
var pairs = [[1, 2], [3, 4]];
var flattened = pairs.expand((pair) => pair).toList();
print(‘Flattened result: $flattened’); // => [1, 2, 3, 4]
var input = [1, 2, 3];
var duplicated = input.expand((i) => [i, i]).toList();
print(duplicated); // => [1, 1, 2, 2, 3, 3]
Kết luận về cách làm việc với Dart Array trong Flutter
Các đoạn code ví dụ cho bài viết này có sẵn trên DartPad. Follow 200Lab 😍 để biết thêm nhiều nội dung hấp dẫn về Dart. Cảm ơn vì đã đọc.
Danh sách 10 Dart Array Methods đã giúp bạn tận dụng tối đa khả năng của Flutter. Bằng cách sử dụng những phương thức này một cách thông minh, bạn có thể xây dựng ứng dụng mạnh mẽ và hiệu quả hơn, đồng thời giảm thời gian và công sức cần thiết cho quá trình phát triển.
Hãy tiếp tục nâng cao kỹ năng lập trình của mình và không ngừng khám phá thêm về thế giới phát triển ứng dụng tại 200Lab Blog nhé. Chúc bạn thành công trên hành trình lập trình và sáng tạo!
(*) Bài viết này được chuyển ngữ và biên tập từ đây.
Một số bài viết liên quan bạn sẽ thích:
Dart là gì? Giới thiệu cơ bản về ngôn ngữ lập trình Dart
Dart 2.15 có gì mới?
Dart Null safety tối ưu ứng dụng Flutter như thế nào?
Dart Cheat Sheet - Full bộ "bỏ túi" các syntax trong ngôn ngữ Dart
Flutter cơ bản: Hiểu về Dart

Kieu Hoa
Khi mình yêu cuộc đời, cuộc đời cũng sẽ yêu mình đắm say
Bài viết liên quan
Tự học Dart: Các Dart Operators (toán tử) bạn cần biết
Sep 02, 2023 • 18 min read
Dart là gì? Giới thiệu cơ bản về ngôn ngữ lập trình Dart
Aug 21, 2023 • 11 min read
Flutter Tutorial 2022: Giới thiệu Flutter Travel App
Sep 07, 2022 • 3 min read
Tổng hợp các Shortcuts, Extensions & Settings trong VSCode khi lập trình Flutter
Jun 03, 2022 • 10 min read
[Phần 1] Những extension cần thiết khi làm việc với Flutter trên VS Code
May 27, 2022 • 4 min read
Dart 2.15 có gì mới?
Dec 17, 2021 • 9 min read