Дарт: В чем разница между .toList () и приведением в виде списка - PullRequest
0 голосов
/ 13 июля 2020

Из любопытства и после некоторых исследований я не нашел того же случая, что и мой,

В чем разница между использованием метода .toList() и литья as List и когда следует использовать каждый из них?

Пожалуйста, рассмотрите возможность предоставления примера.

1 Ответ

1 голос
/ 13 июля 2020

toList() - это метод, вызываемый для нескольких типов объектов, он собирает все данные из потока данных (или существующего List) и создает новый объект List, содержащий данные.

as List это способ сообщить, что данный объект (часто dynamic) на самом деле является объектом List во время выполнения. Это используется, если мы не можем определить тип по типу компиляции (например, при синтаксическом анализе JSON).

Пример

Мы декодируем некоторые JSON и сообщаем Dart, что мы можем гарантировать, что тип во время выполнения будет List, используя as List.

import 'dart:convert';

void main() {
  final list = json.decode('[1, 2, 3]') as List;
  print(list); // [1, 2, 3]

  final newList = list.cast<int>().map((e) => e * 2).toList();
  print(newList); // [2, 4, 6]
}

Затем мы используем .map для удвоения каждого значения и хотим преобразовать его в новый список с помощью usin toList().

...