'list.list' is deprecated and shouldn't be used. use a list literal, [], or the list.filled constructor instead.
Trong hầu hết các ngôn ngữ lập trình, mảng là một khái niệm không thể thiếu. Tuy nhiên, ngôn ngữ lập trình Dart không có khái niệm mảng truyền thống, thay vào đó nó sử dụng List (Danh sách) với các tính năng tương tự và bổ xung thêm các tính năng mới. Sau đây là các đặc điểm của List:
abstract class List
List là một lớp, vì vậy theo suy nghĩ thông thường để tạo một đối tượng bạn cần sử dụng constructor của nó hoặc phương thức nhà máy tĩnh được cung cấp.
@Deprecated("Use a list literal, [], or the List.filled constructor instead")
external factory List([int? length]);
external factory List.filled(int length, E fill, {bool growable = false});
@Since("2.9")
external factory List.empty({bool growable = false});
external factory List.from(Iterable elements, {bool growable = true});
external factory List.of(Iterable Constructor List([int?]) đã lỗi thời (deprecated) và được thay thế bởi cú pháp giống như cách tạo mảng truyền thống:
var foo1 = List external factory List.filled(int length, E fill, {bool growable = false}); Ví dụ: Tạo một List có thể tăng kích thước (growable), chứa 5 phần tử, tất cả các phần tử là "Foo":
var list1 = List @Since("2.9") external factory List.empty({bool growable = false}); Tạo một List rỗng có thể tăng kích thước (growable).
var list1 = List
external factory List.of(Iterable Tạo một đối tượng List chứa tất cả các phần tử của một Iterable.
import 'dart:collection';
void main() {
// A collection containing non-duplicate elements
var iterator = Set external factory List.from(Iterable elements, {bool growable = true}); Tạo một đối tượng List chứa tất cả các phần tử của một Iterable. Constructor này tương tự như List.of, nhưng nó không có khả năng tự kiểm tra dữ liệu của Iterable đầu vào, vì vậy có thể gây ra lỗi tại thời điểm chạy của chương trình.
void main() {
// A collection containing non-duplicate elements
var iterator = Set
Unhandled exception:
type 'int' is not a subtype of type 'String'
#0 new List.from (dart:core-patch/array_patch.dart:40:5)
#1 main
bin/list_from_ex1.dart:10
#2 _delayEntrypointInvocation. external factory List.generate(int length, E generator(int index), {bool growable = true}); Trả về một danh sách [length] phần tử với các phần tử được sinh ra theo hàm được chỉ định. Ví dụ: Tạo một List với 5 phần tử, các phần tử được tạo ra dựa trên chỉ số của nó.
import 'dart:collection';
void main() {
// Create a Clousure (Function)
var generator = (index) {
return 'Element $index';
};
var list = List external factory List.unmodifiable(Iterable elements);
E operator [](int index);
void operator []=(int index, E value);
bool operator ==(Object other);
List
void set first(E value);
void set last(E value);
int get length;
set length(int newLength);
Iterable Các phương thức của List:
static List
Trả về một đối tượng Map
void main() {
var list = idx: 0 --> Tom idx: 1 --> Jerry idx: 2 --> Donald
Trả về một dạng xem của List
class Person {}
class Employee extends Person {
String name;
Employee(this.name);
}
void main() {
var p1 = Employee('Jennifer');
var p2 = Employee('James');
var p3 = Employee('John');
var list =
static List
Một phương thức tĩnh trả về một dạng xem của một List
class Person {}
class Employee extends Person {
String name;
Employee(this.name);
}
void main() {
var p1 = Employee('Jennifer');
var p2 = Employee('James');
var p3 = Employee('John');
var personList =
static void copyRange Thay thế các phần tử từ chỉ số [at] của một List bởi các phần tử từ chỉ số [start] đến [end-1] của một Iterable. Phương thức này có thể ném ra RangeError nếu: end - start + at > target.length
void main() {
var sourceList = void fillRange(int start, int end, [E? fillValue]); Thay thế tất cả các phần tử từ chỉ số [start] tới [end-1] bởi [fillValue].
void main() {
var flowers = [Rose, Lily, Sunflower, Lotus, Water Lily, Marigold, Lavender] -- fillRange from index 2 to 5 -- [Rose, Lily, A, A, A, Marigold, Lavender] int indexWhere(bool test(E element), [int start = 0]); Trả về chỉ số của phần tử đầu tiên vượt qua kiểm tra được chỉ định.
void main() {
var flowers =
void insertAll(int index, Iterable Chèn tất cả các phần tử của một Iterable vào List này tại chỉ số [index].
void main() {
var flowers = [Rose, Lily, Sunflower, Lotus, Snowdrop, Marigold, Lavender] --- After insertAll --- [Rose, Lily, A, B, C, Sunflower, Lotus, Snowdrop, Marigold, Lavender] void removeWhere(bool test(E element)); Loại bỏ tất cả các phần tử vượt qua kiểm tra được chỉ định.
list_removeWhere_ex1.dart void main() { var flowers =[Rose, Lily, Sunflower, Lotus, Water Lily, Marigold, Lavender] -- after removing -- [Sunflower, Marigold]
void replaceRange(int start, int end, Iterable Thay thế các phần tử từ chỉ số [start] tới [end-1] của List này bởi các phần tử của Iterable được chỉ định.
list_replaceRange_ex1.dart void main() { var flowers =[Rose, Lily, Sunflower, Lotus, Water Lily, Marigold, Lavender] -- Replace elements from index 2 to 5 -- [Rose, Lily, A, B, Marigold, Lavender] void retainWhere(bool test(E element)); Loại bỏ tất cả các phần tử không vượt qua một kiểm tra được chỉ định.
list_retainWhere_ex1.dart [Rose, Lily, Sunflower, Lotus, Snowdrop, Marigold, Lavender] -- fillRange from index 2 to 5 -- [Sunflower, Snowdrop]
void setAll(int index, Iterable Thay thế các phần tử từ chỉ số [index] của List này bởi các phần tử của một Iterable được chỉ định. Phương thức này sẽ ném ra RangeError nếu: iterable.length + index > thisList.length
void main() {
var flowers = [Rose, Lily, Sunflower, Lotus, Snowdrop, Marigold, Lavender] --- After setAll --- [Rose, Lily, A, B, C, Marigold, Lavender] void shuffle([Random? random]); Xáo trộn các phần tử của danh sách này một cách ngẫu nhiên.
import 'dart:math';
void main() {
var list = [4, 2, 5, 6, 7, 3, 1] [3, 7, 6, 2, 5, 4, 1]
static void writeIterable Thay thế các phần tử từ chỉ số [at] của một List bởi các phần tử của một Iterable. Phương thức này sẽ ném ra RangeError nếu: source.length + at > target.length
list_writeIterable_ex1.dart void main() { // Note: List is subclass of Iterable. Iterable[0, 1, Zero, One, Two, Three, 6, 7] |