Почему в Flutter невозможен аналог GSON/Jackson/Moshi
Введение
Дадим ответ почему в Flutter не будет в ближайшее время аналога GSON/Jackson или что вам по вкусу. (Далее просто GSON)
Эх, надеюсь однажды на Flutter появятся аналоги того же GSON/Jackson…
Если кратко: рантайм рефлексию во Flutter не завезли.
Далее для тех кто хочет подробностей.
Пути реализации JSON сериализация
Мы имеем POJO объект написанный на любом языке программирования (Kotlin/Swift/C# etc) и нам нужно передать данные этого объекта на сервер в JSON формате. Здесь есть 3 пути:
Захардкодить
Самый простой способ на первый взгляд. Никаких лишних технологий, бери и пиши напрямую!
Но здесь мы встречаемся с проблемой: При каждом изменение нашего POJO требуется вручную переписывать каждое поле, при этом есть шанс допустить глупую ошибку, на дебаг которой может уйти много времени. В общем лишняя головная боль, когда нам нужно быстро сделать MVP, и ресурсы разумнее тратить на более важные вещи.
PainKiller
Так почему же мы не можем автоматизировать этот нудный процесс? Конечно можем! Для этого и существуют библиотеки по типу GSON и прочих. Такая библиотека избавит нас от бойлерплейта, поскольку берёт на себя задачу перегонки полей в JSON строку.
Так что же не так с Flutter?
Её величество "Рефлексия"
Для работы подобной технологии требуется прочесть объект и узнать его поля "изнутри". Этот механизм рефлексии, который позволяет залезть под капот класса к любым полям.
К примеру возьмём класс Student, который имеет 2 поля: name и age.
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
GSON во время работы приложения читает поля этого класса и даёт строку
Gson gson = new GsonBuilder.create();
Student student = new Student();
student.setName("Nick");
student.setAge(20);
gson.toJson(student); //{name:"Nick", age:20}
А заранее скомпилировать?
Конечно, можно скомпилировать бойлерплейт заранее. Также нужно к каждому классу вручную писать аннотации по типу @JsonSerializable(), для того чтобы код был заботливо скомпилирован, иначе ничего работать не будет.

Почему разработчики Flutter решили убрать runtime reflection я ответа на данный момент не нашёл.
Если есть ответ на данный вопрос, то можно поделиться в комментариях.