Я забыл написать <Widget> после children: в первом коде. но в чем разница между children: <Widget>[] и children: [].

 children: <Widget>[  
            Expanded(
            child: Container(
            child: Image.asset('images/dice1.png'), ),),], 

            children: <Widget>[    
            Expanded(
            child: Image.asset('images/dice1.png'),),];
0
Fawad Ahmed 28 Дек 2019 в 19:38
Можно ли проверить, сколько членов в комитете, а затем вернуть правильное имя в одном запросе? Или мне сначала нужно проверить, сколько членов в комитете, а затем отдельно выполнить соответствующий запрос?
 – 
easeccy
28 Дек 2019 в 19:39
Я считаю, что ответ недостаточно ясен ... Я имею в виду, с какой проблемой вы столкнулись, которую необходимо решить?
 – 
Steve Nosse
28 Дек 2019 в 19:40
////// дочерние элементы code1: [Expanded (child: Container (child: Image.asset ('images / dice1.png'),),),], ////// дочерние элементы code2: < widget> [Expanded (child: Image.asset ('images / dice1.png'),),], в первом коде я использую контейнер, обернутый Expanded, а во втором я просто использую расширенный класс. но результат такой же в обоих случаях. в чем разница между кодом
 – 
Fawad Ahmed
28 Дек 2019 в 19:45

3 ответа

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

0
Soli 28 Дек 2019 в 19:50

Из Oracle Doc:

Код, использующий универсальные шаблоны, имеет много преимуществ по сравнению с обычным кодом: более строгие проверки типов во время компиляции. Компилятор Java применяет строгую проверку типов к универсальному коду и выдает ошибки, если код нарушает безопасность типов. Исправлять ошибки времени компиляции проще, чем исправлять ошибки времени выполнения, которые бывает сложно найти.

То же самое и с таким языком, как Dart:

Когда вы добавляете Widget перед инициализацией списка, ожидаемый тип параметра children знает, что типы совпадают, если вы добавляете элемент с типом Widget, и если вы добавляете другой тип, вы получить сообщение времени компиляции. Если вы не добавляете этот универсальный тип, вы знаете только время выполнения (обратите внимание, что некоторые базовые типы могут быть переданы даже без универсального типа, но с настраиваемым типом это будет сложно).

Параметр виджета Column children ожидает List<Widget>. Итак, это как показано ниже:

List<Widget> chidren = <Widget>[];

Преобразование из строки в массив реагировать родной

List<Widget> chidren = [];
0
Blasanka 28 Дек 2019 в 20:24

Когда вы пишете List<Widget> chidren = <Widget>[];, здесь происходят две вещи:

  1. Ссылка на List<Widget> chidren создана.
  2. и этой ссылке присваивается объект <Widget>[];.

Так,

Объявляя ссылку с помощью <Widget>, вы даете компилятору знать, что только тот объект, который вы хотите принять для присвоения этой ссылке, должен иметь тип Widget или подтип Widget.

И, назначая объект с помощью <Widget>, вы говорите компилятору, что текущий объект имеет тип <Widget>. Здесь <Widget>[]; вы говорите, что список содержит только Widget или подтип Widget.

Если вы не укажете тип перед созданием списка, например [];, тогда в списке разрешены любые типы объектов. Но если вы укажете, что список имеет тип Widget, тогда в списке будет разрешено только Widget.

Для проверки попробуйте создать List list = []; и попробуйте добавить в него int или строку или любой произвольный тип данных. Вам будет разрешено сохранять в нем любые данные. Теперь создайте List<Widget> list = <Widget>[];, вам будет разрешено добавлять в список только виджеты и ничего больше.

Чем хороши дженерики?

Именно здесь {{X11}} в {{X12}} действительно берет свое: вы можете делать все, что захотите, в своем локальном репозитории. Git - это редактор истории с полным набором услуг, и вы внесли некоторые изменения, которые хотите отменить. Так что отмените их:

Примерка дротика:

List<int> ints = ['string']; // не выдаст вам ошибку времени компиляции, но ошибку времени выполнения, что строка не может быть присвоена int.

List<int> ints = <int>['string']; // выдаст ошибку времени компиляции.

Чтобы построить запрос

0
Kalpesh Kundanani 28 Дек 2019 в 20:56