mandreshope 44289e29dc feat: Adds product image field to data models
Includes an `image` field in the `ProductStruct` and `ProductEntity` data models.

Updates the ObjectBox schema and regenerates the necessary code to persist the new field.

Refactors the `ProductScannedComponent` to accept a `ProductStruct` object, simplifying parameter passing.

Updates the `ScannerPage` to build and pass the `ProductStruct` to the component, enabling the display of the product image and using the structured data for other details like quantity. The 'Marque' display is replaced with 'Quantité' in the component.
2025-07-03 17:20:44 +03:00

248 lines
7.8 KiB
Dart

// GENERATED CODE - DO NOT MODIFY BY HAND
// This code was generated by ObjectBox. To update it run the generator again
// with `dart run build_runner build`.
// See also https://docs.objectbox.io/getting-started#generate-objectbox-code
// ignore_for_file: camel_case_types, depend_on_referenced_packages
// coverage:ignore-file
import 'dart:typed_data';
import 'package:flat_buffers/flat_buffers.dart' as fb;
import 'package:objectbox/internal.dart'
as obx_int; // generated code can access "internal" functionality
import 'package:objectbox/objectbox.dart' as obx;
import 'package:objectbox_flutter_libs/objectbox_flutter_libs.dart';
import '../../backend/objectbox/entities/product/product_entity.dart';
export 'package:objectbox/objectbox.dart'; // so that callers only have to import this file
final _entities = <obx_int.ModelEntity>[
obx_int.ModelEntity(
id: const obx_int.IdUid(1, 6757833172062715556),
name: 'ProductEntity',
lastPropertyId: const obx_int.IdUid(7, 1825580906382154543),
flags: 0,
properties: <obx_int.ModelProperty>[
obx_int.ModelProperty(
id: const obx_int.IdUid(1, 1853465479129290672),
name: 'id',
type: 6,
flags: 1,
),
obx_int.ModelProperty(
id: const obx_int.IdUid(2, 4521897043130066476),
name: 'code',
type: 9,
flags: 0,
),
obx_int.ModelProperty(
id: const obx_int.IdUid(3, 2561289170534233438),
name: 'name',
type: 9,
flags: 0,
),
obx_int.ModelProperty(
id: const obx_int.IdUid(4, 6084891210993334692),
name: 'description',
type: 9,
flags: 0,
),
obx_int.ModelProperty(
id: const obx_int.IdUid(5, 883454706727408240),
name: 'price',
type: 9,
flags: 0,
),
obx_int.ModelProperty(
id: const obx_int.IdUid(6, 7033704955625644592),
name: 'quantity',
type: 9,
flags: 0,
),
obx_int.ModelProperty(
id: const obx_int.IdUid(7, 1825580906382154543),
name: 'image',
type: 9,
flags: 0,
),
],
relations: <obx_int.ModelRelation>[],
backlinks: <obx_int.ModelBacklink>[],
),
];
/// Shortcut for [obx.Store.new] that passes [getObjectBoxModel] and for Flutter
/// apps by default a [directory] using `defaultStoreDirectory()` from the
/// ObjectBox Flutter library.
///
/// Note: for desktop apps it is recommended to specify a unique [directory].
///
/// See [obx.Store.new] for an explanation of all parameters.
///
/// For Flutter apps, also calls `loadObjectBoxLibraryAndroidCompat()` from
/// the ObjectBox Flutter library to fix loading the native ObjectBox library
/// on Android 6 and older.
Future<obx.Store> openStore({
String? directory,
int? maxDBSizeInKB,
int? maxDataSizeInKB,
int? fileMode,
int? maxReaders,
bool queriesCaseSensitiveDefault = true,
String? macosApplicationGroup,
}) async {
await loadObjectBoxLibraryAndroidCompat();
return obx.Store(
getObjectBoxModel(),
directory: directory ?? (await defaultStoreDirectory()).path,
maxDBSizeInKB: maxDBSizeInKB,
maxDataSizeInKB: maxDataSizeInKB,
fileMode: fileMode,
maxReaders: maxReaders,
queriesCaseSensitiveDefault: queriesCaseSensitiveDefault,
macosApplicationGroup: macosApplicationGroup,
);
}
/// Returns the ObjectBox model definition for this project for use with
/// [obx.Store.new].
obx_int.ModelDefinition getObjectBoxModel() {
final model = obx_int.ModelInfo(
entities: _entities,
lastEntityId: const obx_int.IdUid(1, 6757833172062715556),
lastIndexId: const obx_int.IdUid(0, 0),
lastRelationId: const obx_int.IdUid(0, 0),
lastSequenceId: const obx_int.IdUid(0, 0),
retiredEntityUids: const [],
retiredIndexUids: const [],
retiredPropertyUids: const [],
retiredRelationUids: const [],
modelVersion: 5,
modelVersionParserMinimum: 5,
version: 1,
);
final bindings = <Type, obx_int.EntityDefinition>{
ProductEntity: obx_int.EntityDefinition<ProductEntity>(
model: _entities[0],
toOneRelations: (ProductEntity object) => [],
toManyRelations: (ProductEntity object) => {},
getId: (ProductEntity object) => object.id,
setId: (ProductEntity object, int id) {
object.id = id;
},
objectToFB: (ProductEntity object, fb.Builder fbb) {
final codeOffset = object.code == null
? null
: fbb.writeString(object.code!);
final nameOffset = object.name == null
? null
: fbb.writeString(object.name!);
final descriptionOffset = object.description == null
? null
: fbb.writeString(object.description!);
final priceOffset = object.price == null
? null
: fbb.writeString(object.price!);
final quantityOffset = object.quantity == null
? null
: fbb.writeString(object.quantity!);
final imageOffset = object.image == null
? null
: fbb.writeString(object.image!);
fbb.startTable(8);
fbb.addInt64(0, object.id);
fbb.addOffset(1, codeOffset);
fbb.addOffset(2, nameOffset);
fbb.addOffset(3, descriptionOffset);
fbb.addOffset(4, priceOffset);
fbb.addOffset(5, quantityOffset);
fbb.addOffset(6, imageOffset);
fbb.finish(fbb.endTable());
return object.id;
},
objectFromFB: (obx.Store store, ByteData fbData) {
final buffer = fb.BufferContext(fbData);
final rootOffset = buffer.derefObject(0);
final idParam = const fb.Int64Reader().vTableGet(
buffer,
rootOffset,
4,
0,
);
final codeParam = const fb.StringReader(
asciiOptimization: true,
).vTableGetNullable(buffer, rootOffset, 6);
final nameParam = const fb.StringReader(
asciiOptimization: true,
).vTableGetNullable(buffer, rootOffset, 8);
final descriptionParam = const fb.StringReader(
asciiOptimization: true,
).vTableGetNullable(buffer, rootOffset, 10);
final priceParam = const fb.StringReader(
asciiOptimization: true,
).vTableGetNullable(buffer, rootOffset, 12);
final quantityParam = const fb.StringReader(
asciiOptimization: true,
).vTableGetNullable(buffer, rootOffset, 14);
final imageParam = const fb.StringReader(
asciiOptimization: true,
).vTableGetNullable(buffer, rootOffset, 16);
final object = ProductEntity(
id: idParam,
code: codeParam,
name: nameParam,
description: descriptionParam,
price: priceParam,
quantity: quantityParam,
image: imageParam,
);
return object;
},
),
};
return obx_int.ModelDefinition(model, bindings);
}
/// [ProductEntity] entity fields to define ObjectBox queries.
class ProductEntity_ {
/// See [ProductEntity.id].
static final id = obx.QueryIntegerProperty<ProductEntity>(
_entities[0].properties[0],
);
/// See [ProductEntity.code].
static final code = obx.QueryStringProperty<ProductEntity>(
_entities[0].properties[1],
);
/// See [ProductEntity.name].
static final name = obx.QueryStringProperty<ProductEntity>(
_entities[0].properties[2],
);
/// See [ProductEntity.description].
static final description = obx.QueryStringProperty<ProductEntity>(
_entities[0].properties[3],
);
/// See [ProductEntity.price].
static final price = obx.QueryStringProperty<ProductEntity>(
_entities[0].properties[4],
);
/// See [ProductEntity.quantity].
static final quantity = obx.QueryStringProperty<ProductEntity>(
_entities[0].properties[5],
);
/// See [ProductEntity.image].
static final image = obx.QueryStringProperty<ProductEntity>(
_entities[0].properties[6],
);
}