Как правильно объявлять нефиксированный список типизированный List

Как правильно объявлять нефиксированный список типизированный List, как в 1 варианте или как во 2 варианте или оба варианта правильные? Компилятор ошибок не выдает.

void main() {
 //1 вариант
 List ara1 = <int>[];
 //2 вариант
 List<int> ara2 = [];
 
 print(ara1.runtimeType); //List<int>
 print(ara2.runtimeType); //List<int>
}

Ответы (2 шт):

Автор решения: santavital

На мой взгляд Второй вариант правильный, т.к. явно указывает тип в таком варианте:

List ara1;
List<int> ara2; // тип указывается явно

См. https://api.dart.dev/stable/2.14.1/dart-core/List-class.html

→ Ссылка
Автор решения: MiT

Вообще если говорить о правильности, то самый правильный вариант будет таким:

List<int> ara = <int>[];

List<int> мы указываем для анализатора (и так более удобно понимать что за тип), а <int>[] мы указываем для того чтобы точно быть уверенными что в runtime не будет проблем с типами (например при работе с не явным типом).

→ Ссылка