Models Topic

모델 Models (lib/models)

이 폴더에는 모든 모델 파일들이 있습니다. xxx.dart로 되어있는 파일이 모델 파일입니다. xxx.g.dart 파일들은 json_serializable을 통해 build_runner가 생성한 파일이므로 직접 수정해서는 안됩니다.

아래 패키지들을 참고해주세요.

json_serializable

json_annotation

build_runner

모델 생성 포맷

모델 생성의 기본 포맷은 다음과 같습니다.

part 'cow.g.dart';

@JsonSerializable()
class Cow {
  @JsonKey(name: 'id')
  String id;
  @JsonKey(name: 'birth', fromJson: dateTimeFromJson, toJson: dateTimeToJson)
  DateTime? birth;
  @JsonKey(ignore: true)
  bool isSelected;

  Cow({
    required this.id,
    required this.birth,
    this.isSelected = false,
  });

  factory Cow.fromJson(Map<String, dynamic> json) => _$CowFromJson(json);

  Map<String, dynamic> toJson() => _$CowToJson(this);

  @override
  bool operator ==(other) {
    return (other is Cow) && other.id == id;
  }

  @override
  int get hashCode => super.hashCode;

  @override
  String toString() => this.toJson().toString();
}

JSON 파싱시 커스텀 객체 변환이 필요할때

기본 자료형이 아닌 경우에는 converting_methods.dart 파일에 컨버팅 함수를 추가하여 @JsonkeyfromJson, toJson으로 전달합니다.

class Cow {
  ...
  @JsonKey(name: 'birth', fromJson: dateTimeFromJson, toJson: dateTimeToJson)
  DateTime? birth;
}

모델 수정 후

디렉토리에 있는 모델 파일의 내용을 수정하였을 경우 프로젝트 root 경로에서 아래 명령어를 실행하여 <model>.g.dart 파일을 생성 또는 업데이트 해줍니다.

$ flutter pub run build_runner build --delete-conflicting-outputs

Libraries

converting_methods Models
모델파일에서 json 파싱이 이루어질때 기본 자료형(String, int)이 아닌 경우 커스텀 컨버팅 함수들을 정의해놓았습니다.

Classes

BarDataDay Models
소데이터 그래프에서 사용되는 모델입니다. BarDataDay 안에 BarDataHour가 배열로 들어가 있습니다. 보통 CowData 모델을 그래프에서 사용하기위해 BarDataDay, BarDataHour로 변환하는 과정을 거칩니다. Helper.convertCowDataToGraphData 를 참고해주세요.
BarDataHour Models
소데이터 그래프에서 사용되는 모델입니다. BarDataDay 안에 BarDataHour가 배열로 들어가 있습니다. 보통 CowData 모델을 그래프에서 사용하기위해 BarDataDay, BarDataHour로 변환하는 과정을 거칩니다. Helper.convertCowDataToGraphData 를 참고해주세요.
ChatMessage Models
채팅메시지
Cow Models
소 정보입니다.
CowData Models
소 개체의 데이터입니다.
CowDataDay Models
일별 소 데이터입니다.
CowDataHour Models
시간별 소 데이터입니다. 각 ActionType별 데이터가 CowDataValue객체로 들어있습니다.
CowDataValue Models
소 데이터의 값을 나타내는 모델입니다.
CowGroup Models
소 그룹 모델입니다.
CowStatus Models
개체 상태의 숫자, 개체목록들을 가지고 있는 모델입니다.
DataTableCell Models
DataCell에 추가적인 데이터를 담기위해 커스텀한 모델입니다. CustomDataTable은 이 모델을 파라메터로 받아 DataCell을 그립니다.
DataTableColumn Models
DataColumn에 추가적인 데이터를 담기위해 커스텀한 모델입니다. CustomDataTable은 이 모델을 파라메터로 받아 DataColumn을 그립니다.
DataTableRow Models
DataRow에 추가적인 데이터를 담기위해 커스텀한 모델입니다. CustomDataTable은 이 모델을 파라메터로 받아 DataRow를 그립니다.
DiseaseObservation Models
질병관찰 모델입니다.
Doctor Models
채팅 구현하다가 만든 모델입니다. 현재 채팅기능이 없기도하고 이 모델은 쓰지 않습니다.
Farm Models
농장 모델입니다.
Gateway Models
게이트웨이 모델입니다.
Preference Models
[ { "healthDoubtNotification": { "on": false "items": { "action": ActionType.lactation, "on": false, } } } ] [...]
Report Models
리포트 카드 모델입니다.
Sensor Models
센서 모델입니다.
User Models
로그인된 사용자의 모델입니다.