Откровенно говоря, вы не можете этого сделать. Поскольку ошибка указывает на то, что вы не можете ссылаться на переменную marker
до ее объявления. Это имеет смысл, поскольку вы пытаетесь сослаться на указатель на объект, который не был создан и поэтому не имеет указателя на него.
Я бы подумал, почему именно вам нужно ссылаться на переменную marker
внутри одного из ее параметров конструктора. Возможно, вы пытаетесь работать против дизайна объекта, используя лямбду. Если вы решите, что вам действительно нужен доступ к данным маркера внутри лямбды, вы можете попробовать обернуть маркер на фабрике следующим образом:
class MarkerFactory {
Marker _marker;
Marker buildMarker() => _marker ??= Marker(
position: LatLng(
center.latitude + sin(_markerIdCounter * pi / 6.0) / 20.0,
center.longitude + cos(_markerIdCounter * pi / 6.0) / 20.0,
),
onDragEnd: (LatLng newPosition) async {
print('Old position: ${marker.position}');
},
);
}
Дайте мне знать, если это полезно.