Observation constructor

Observation({
  1. required String id,
  2. required String speciesScientificName,
  3. required int count,
  4. required Location location,
  5. required DateTime observedAt,
  6. String? notes,
  7. String? userId,
  8. int? locationAccuracyM,
  9. String? dataSource,
  10. String? imageFilename,
  11. String? modelId,
  12. double? confidence,
  13. Map<String, dynamic>? metadata,
})

Creates a new Observation instance.

Required fields ensure minimum data quality for surveillance and research purposes.

Throws ArgumentError if required fields are invalid.

Implementation

Observation({
  required this.id,
  required this.speciesScientificName,
  required this.count,
  required this.location,
  required this.observedAt,
  this.notes,
  this.userId,
  this.locationAccuracyM,
  this.dataSource,
  this.imageFilename,
  this.modelId,
  this.confidence,
  this.metadata,
}) : assert(id.isNotEmpty, 'Observation ID cannot be empty'),
     assert(speciesScientificName.isNotEmpty, 'Species name cannot be empty'),
     assert(count > 0, 'Count must be positive'),
     assert(confidence == null || (confidence >= 0.0 && confidence <= 1.0),
            'Confidence must be between 0.0 and 1.0'),
     assert(locationAccuracyM == null || locationAccuracyM >= 0,
            'Location accuracy cannot be negative');