Models Topic
모델 Models (lib/models)
이 폴더에는 모든 모델 파일들이 있습니다.
xxx.dart
로 되어있는 파일이 모델 파일입니다.
xxx.g.dart
파일들은 json_serializable을 통해 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
파일에 컨버팅 함수를 추가하여 @Jsonkey
에 fromJson
, 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
- 로그인된 사용자의 모델입니다.