Ярлык для создания шаблонных кодов 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, затем щелкните правой кнопкой мыши класс модели в режиме генерации, и вы можете сгенерировать

Другие вопросы по тегам