@@ -9,7 +9,7 @@ class CodeChunks {
99
1010 // Currently loading model from "JSON" which always encodes with double quotes
1111 // ignore_for_file: prefer_single_quotes
12-
12+ ${ typedDataImportIfNeeded ( model )}
1313 import 'package:objectbox/objectbox.dart';
1414 export 'package:objectbox/objectbox.dart'; // so that callers only have to import this file
1515 import '${imports .join ("';\n import '" )}';
@@ -36,13 +36,34 @@ class CodeChunks {
3636 },
3737 writer: (Map<String, dynamic> members) {
3838 final r = $name ();
39- ${entity .properties .map (( p ) => "r.${ p . name } = members['${ p . name }'];" ).join ()}
39+ ${entity .properties .map (propertyBinding ).join ()}
4040 return r;
4141 }
4242 )
4343 """ ;
4444 }
4545
46+ static String typedDataImportIfNeeded (ModelInfo model) {
47+ if (model.entities
48+ .any ((ModelEntity entity) => entity.properties.any (isTypedDataList))) {
49+ return "import 'dart:typed_data';\n " ;
50+ }
51+ return '' ;
52+ }
53+
54+ static bool isTypedDataList (ModelProperty property) {
55+ return (property.dartFieldType == 'Uint8List' ||
56+ property.dartFieldType == 'Int8List' );
57+ }
58+
59+ static String propertyBinding (ModelProperty property) {
60+ if (isTypedDataList (property)) {
61+ return "r.${property .name } = members['${property .name }'] == null ? null : ${property .dartFieldType }.fromList(members['${property .name }']);" ;
62+ } else {
63+ return "r.${property .name } = members['${property .name }'];" ;
64+ }
65+ }
66+
4667 static String _queryConditionBuilder (ModelEntity entity) {
4768 final ret = < String > [];
4869 for (var prop in entity.properties) {
@@ -71,6 +92,9 @@ class CodeChunks {
7192 case OBXPropertyType .Relation :
7293 fieldType = 'Integer' ;
7394 break ;
95+ case OBXPropertyType .ByteVector :
96+ fieldType = 'ByteVector' ;
97+ break ;
7498 case OBXPropertyType .StringVector :
7599 fieldType = 'StringVector' ;
76100 break ;
0 commit comments