флаттер анонимные / встроенные функции для свойств виджета

Я новичок в дротике и флаттере, я пытаюсь использовать встроенную функцию для возврата значения.

SizedBox(
  height: _getheight()
),

double _getheight(){
//do some stuff
return 20.0;
}
//WORKS
SizedBox(
height: (){return 20.0;}
),
//(Won't build)

ошибка: тип аргумента 'double Function ()' не может быть назначен типу параметра 'double'.

SizedBox(
 height: (){return 20.0;} as double
),

--builds, но завершается ошибкой во время выполнения: type '() = ›double' не является подтипом типа 'double' в приведении типов


person ryan    schedule 10.07.2020    source источник


Ответы (1)


height принимают значение типа double. В первом примере вы выполняете _getheight(), а затем выдает результат этого выполнения в качестве параметра с именем height.

Во втором примере вы пытаетесь передать height функцию в качестве аргумента (набранную как double Function()), что недопустимо, поскольку height определено для принятия double.

Затем вы могли бы сделать:

SizedBox(
height: (){return 20.0;}()
),

Что выполнит метод (см. Последний ()) и будет использовать возвращаемое значение в качестве аргумента для height.

person julemand101    schedule 10.07.2020
comment
Спасибо! имеет смысл, я никогда не выполнял встроенную функцию. - person ryan; 11.07.2020