Package augments the Freezed library, to assist with transforming model data into different formats.
This is an example of a Freezed model class, that has been augmented with the wt_models library.
@freezed
class ContactDetails extends BaseModel<ContactDetails> with _$ContactDetails {
static final convert = DslConvert<ContactDetails>(
titles: ['name', 'address', 'phone', 'email'],
jsonToModel: ContactDetails.fromJson,
none: ContactDetails.empty(),
);
factory ContactDetails({
required String name,
required String address,
required String phone,
required String email,
String? placeId,
}) = _ContactDetails;
ContactDetails._();
factory ContactDetails.fromJson(Map<String, dynamic> json) => _$ContactDetailsFromJson(json);
factory ContactDetails.empty() => ContactDetails(
name: '',
address: '',
phone: '',
email: '',
);
@override
String getId() => email;
@override
String getTitle() => name;
@override
List<String> getTitles() => convert.titles();
}
File outputDirPath = 'tmp/output';
File jsonFile = File('$outputDirPath/jsonMap.json');
File jsonListFile = File('$outputDirPath/jsonMapList.json');
File csvRowFile = File('$outputDirPath/csvRow.csv');
File csvRowListFile = File('$outputDirPath/csvRowListList.csv');
static final contactDetails = ContactDetails(
name: 'Person One',
address: '1 there street, somewhere',
phone: '1111 111 111',
email: 'persoon@one.id.au',
);
static final contactDetailsList = [contactDetails];
Example of converting to and from a model and JSON formats
void main() {
final JsonMap jsonMap = ContactDetails.convert.from.model.to.jsonMap(contactDetails);
final ContactDetails modelFromJsonMap = ContactDetails.convert.to.model.from.jsonMap(jsonMap);
log.d('JsonMap: $jsonMap, Model: $modelFromJsonMap');
final String jsonMapString = ContactDetails.convert.from.model.to.jsonMapString(contactDetails);
final ContactDetails modelFromJsonMapString =
ContactDetails.convert.to.model.from.jsonMapString(jsonMapString);
log.d('JsonMapString: $jsonMapString, Model: $modelFromJsonMapString');
ContactDetails.convert.from.model.to.jsonMapFile(contactDetails, jsonFile);
final ContactDetails modelFromJsonMapFile =
ContactDetails.convert.to.model.from.jsonMapFile(jsonFile);
log.d('jsonMapFile: Model: $modelFromJsonMapFile');
final List<JsonMap> jsonMapList =
ContactDetails.convert.from.modelList.to.jsonMapList(contactDetailsList);
final List<ContactDetails> modelListFromJsonMapList =
ContactDetails.convert.to.modelList.from.jsonMapList(jsonMapList);
log.d('JsonMapList: $jsonMapList, Model List: $modelListFromJsonMapList');
final String jsonMapListString =
ContactDetails.convert.from.modelList.to.jsonMapListString(contactDetailsList);
final List<ContactDetails> modelListFromJsonMapListString =
ContactDetails.convert.to.modelList.from.jsonMapListString(jsonMapListString);
log.d('JsonMapListString: $jsonMapListString, Model List: $modelListFromJsonMapListString');
ContactDetails.convert.from.modelList.to.jsonMapListFile(contactDetailsList, jsonListFile);
final List<ContactDetails> modelListFromJsonMapListFile =
ContactDetails.convert.to.modelList.from.jsonMapListFile(jsonListFile);
log.d('jsonMapListFile: Model List: $modelListFromJsonMapListFile');
}
Example of converting to and from a model and CSV formats
void main() {
final CsvRow csvRow = ContactDetails.convert.from.model.to.csvRow(contactDetails);
final ContactDetails modelFromCsvRow = ContactDetails.convert.to.model.from.csvRow(csvRow);
log.d('CsvRow: $csvRow, Model: $modelFromCsvRow');
final String csvRowString = ContactDetails.convert.from.model.to.csvRowString(contactDetails);
final ContactDetails modelFromCsvRowString =
ContactDetails.convert.to.model.from.csvRowString(csvRowString);
log.d('CsvRowString: $csvRowString, Model: $modelFromCsvRowString');
ContactDetails.convert.from.model.to.csvRowFile(contactDetails, csvRowFile);
final ContactDetails modelFromCsvRowFile =
ContactDetails.convert.to.model.from.csvRowFile(csvRowFile);
log.d('csvRowFile: Model: $modelFromCsvRowFile');
final List<CsvRow> csvRowList =
ContactDetails.convert.from.modelList.to.csvRowList(contactDetailsList);
final List<ContactDetails> modelListFromCsvRowList =
ContactDetails.convert.to.modelList.from.csvRowList(csvRowList);
log.d('CsvRowList: $csvRowList, Model List: $modelListFromCsvRowList');
final String csvRowListString =
ContactDetails.convert.from.modelList.to.csvRowListString(contactDetailsList);
final List<ContactDetails> modelListFromCsvRowListString =
ContactDetails.convert.to.modelList.from.csvRowListString(csvRowListString);
log.d('CsvRowListString: $csvRowListString, Model List: $modelListFromCsvRowListString');
ContactDetails.convert.from.modelList.to.csvRowListFile(contactDetailsList, csvRowListFile);
final List<ContactDetails> modelListFromCsvRowListFile =
ContactDetails.convert.to.modelList.from.csvRowListFile(csvRowFile);
log.d('csvRowListFile: Model List: $modelListFromCsvRowListFile');
}