안드로이드 스튜디오에서 Flutter 개발로 freezed 용 Live Template 준비

Live Template 추천



Dart에는 데이터 클래스가 없기 때문에 JSON을 직렬화 및 직렬화하지 않으면 고리 코드가 필요합니다.

그래서 freezed 을 사용합니다만, 좀처럼 기억하는 코드가 아니므로, Live Template를 사용합시다는 이야기입니다.

Live Template 설정 위치



환경 설정 Android Studio > Preferences...Editor > Live Templates 에서 Flutter를 선택하고 "➕"버튼을 클릭합니다.



설정 내용






설정 항목
설정 내용
비고


Abbreviation
freezed
보완 할 때 입력하는 문자열이므로 스스로 알기 쉬운 것을

Description
Create freezed class
이것도 스스로 알기 쉬운 것을

템플릿 텍스트
템플릿 문자열
아래 (Template text) 참조

편집 변수
템플릿 변수
아래 (Variables) 참조

Application in
Dart: top-level
최상위 수준에서만 사용하기 때문에

Expand with
Default (Tab)
자신의 취향에 따라

Reformat according to style
non check
자신의 취향에 따라

Shorten FQ names
check
자신의 취향에 따라


템플릿 텍스트


import 'package:flutter/foundation.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part '$FILE_NAME$.freezed.dart';
part '$FILE_NAME$.g.dart';

@freezed
abstract class $CLASS_NAME$ with _$$$CLASS_NAME$ {
  const factory $CLASS_NAME$({
    @required int id,
    @JsonKey(name: 'image_url') @required String imageUrl,
  }) = _$CLASS_NAME$;

 factory $CLASS_NAME$.fromJson(Map<String, dynamic> json) => _$$$CLASS_NAME$FromJson(json);
}

※ 변수 id , imageUrl 의 선언 부분은 @JsonKey(name: 'xxxxx') 의 쓰는 방법을 매번 조사하는 것이 번거롭기 때문에 복제용으로 넣고 있는 것입니다. 불필요한 분은 삭제하십시오.

Variables






이름
Expression
Default value
Skip if defined


FILE_NAME
fileNameWithoutExtension()
fileNameWithExtension()
check

CLASS_NAME
underscoresToCamelCase(String)
capitalize (underscoresToCamelCase (fileNameWithoutExtension ()))
check


이것들을 설정, OK, Apply하십시오.

주의점



파일명으로부터 작성하게 되어 있습니다. 예를 들어 content_category.dart 파일에 freezed 를 입력하여 완성하면 다음과 같은 코드가 됩니다.
import 'package:flutter/foundation.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'content_category.freezed.dart';
part 'content_category.g.dart';

@freezed
abstract class ContentCategory with _$ContentCategory {
  const factory ContentCategory({
    @required int id,
    @JsonKey(name: 'image_url') @required String imageUrl,
  }) = _ContentCategory;

 factory ContentCategory.fromJson(Map<String, dynamic> json) => _$ContentCategoryFromJson(json);
}

그런 다음 build_runner를 사용하여 코드를 생성합니다. 자세한 내용은 freezed을 README를 참조하십시오.

좋은 웹페이지 즐겨찾기