Я реализую класс с несколькими конструкторами, который внутренне построен вокруг IndexedWidgetBuilder (объект функции)
typedef IndexedWidgetBuilder = Widget Function(BuildContext context, int index);
Теперь один из конструкторов, вызывающих его MyWidget.list
, получит список myList
и создайте из него IndexedWidgetBuilder myBuilder
:
IndexedWidgetBuilder myBuilder
= (BuildContext context, int index) => list[index % list.length];
Пока этот фрагмент кода работает идеально, я не могу использовать его в списке инициализатора конструктора.Минимальный рабочий пример:
class MyApp {
// Default constructor goes here
MyApp.list(List<int> myList) :
myBuilder = (BuildContext context, int index) => list[index % list.length];
final IndexedWidgetBuilder myBuilder;
}
В Android Studio этот фрагмент кода выдает ошибку:
Тип инициализатора «Тип» не может быть назначен типу поля »(BuildContext, int) → Widget '.
Я не нашел ничего связанного с Google, и документация по языку также не предоставила полезной информации.Удаление ключевого слова final
и перемещение всего в блок кода конструктора было бы решением, хотя я бы рассмотрел только последнее средство.
Примечание. Это не является проблемой, связанной с флаттером,так как это происходит с каждой функцией объектов.