Ярлык для создания шаблонных кодов json_serializable (Flutter / Dart plugin) в Android Studio
json_serializable плагин Dart, отлично справляется с автоматической генерацией некоторых подверженных ошибкам и громоздких частей кода в обмен на некоторый шаблон: два метода, одна аннотация и одна ссылка на сгенерированный файл.
import 'package:json_annotation/json_annotation.dart';
part 'location.g.dart';
@JsonSerializable()
class Location {
final double lat;
final double lng;
Location(this.lat, this.lng);
factory Location.fromJson(Map<String, dynamic> json) =>
_$LocationFromJson(json);
Map<String, dynamic> toJson() => _$LocationToJson(this);
}
Очевидно, это лучше делать также на машине, например, в конструкторе этого класса: я просто пишу последнее поле, затем нажимаю alt+enter, и Android Studio размещает конструктор за меня.
Кто-нибудь знает, как заставить Android Studio делать это для json_serializable?
4 ответа
Установите плагины «Генератор сериализации Dart json» в студии Android. Это создаст опцию.
Наконец-то я написал этот простой скрипт Live Template. Вам просто нужно ввести имя файла и список полей. Смотрите гифку ниже.
import 'package:json_annotation/json_annotation.dart';
part '$NAME$.g.dart'
@JsonSerializable(explicitToJson: true)
class $CAP_NAME$ {
$END$
$CAP_NAME$();
factory $CAP_NAME$.fromJson(Map<String, dynamic> json) => _$$$CAP_NAME$FromJson(json);
Map<String, dynamic> toJson() => _$$$CAP_NAME$ToJson(this);
}
Ну, в этом простом решении теперь генерируется упомянутый шаблон, и это отлично работает для меня, но это действительно очень наивный способ, я не тратил много времени на изучение скрипта Live Template. Одно улучшение состоит в том, чтобы заставить его записывать поля в список параметров конструктора, а не делать это вручную. Другой способ — использовать сценарий шаблона файла, который я не рассматривал, и, возможно, создать файл и поля в диалоговом окне.
Существует расширение Visual Studio Code под названием Dart Data Class Generator (https://marketplace.visualstudio.com/items?itemName=BendixMa.dart-data-class-generator), которому можно дать либо список конечных полей, либо даже образец файла JSON, и он сгенерирует класс данных с множеством полезных методов. Он утверждает:
Генератор может создавать методы конструктора, copyWith, toMap, fromMap, toJson, fromJson, toString, operator == и hashCode для класса на основе свойств класса или необработанного JSON.
Если вы сторонник Java, я также вижу: https://plugins.jetbrains.com/plugin/12429-dart-data-class, но я не играл с этим.
Из плагинов скачайте классы данных Dart, затем щелкните правой кнопкой мыши класс модели в режиме генерации, и вы можете сгенерировать