Чтобы гарантировать, что метод toJsonв пакете json_serializableFlutter не устанавливает значение, если оно равно нулю, вы можете использовать аннотацию JsonKeyс параметром includeIfNull, установленным в значение false. Этот параметр указывает процессу сериализации исключить поле из вывода JSON, если его значение равно нулю.
Вот пример использования JsonKeyс includeIfNull:
import 'package:json_annotation/json_annotation.dart';
part 'example.g.dart';
@JsonSerializable()
class Example {
@JsonKey(includeIfNull: false)
String? name;
@JsonKey(includeIfNull: false)
int? age;
Example({this.name, this.age});
factory Example.fromJson(Map<String, dynamic> json) =>
_$ExampleFromJson(json);
Map<String, dynamic> toJson() => _$ExampleToJson(this);
}
В этом примере поля nameи ageбудут включены в выходные данные JSON только в том случае, если они имеют ненулевые значения.
Чтобы сгенерировать необходимый код, вам необходимо запустить команду build runner, обычно flutter pub run build_runner build.