dartrosa_entities 0.1.1
dartrosa_entities: ^0.1.1 copied to clipboard
ODK entities for DartRosa: entity forms, entity lists as secondary instances, offline entity updates and storage. A port of Collect's entities module.
dartrosa_entities #
ODK entities for DartRosa: a port of ODK Collect's entities module.
- Entity forms:
entities:create,updateand upsert,entities:saveto, entity labels and ids (EntityFormParseProcessor,EntityFormFinalizationProcessor). - Local entity lists as secondary instances (
jr://file-csv/<list>.csv) with fast predicate filtering (LocalEntitiesInstanceProvider,LocalEntitiesFilterStrategy) andpulldata()over them. - Offline entity updates and server reconciliation
(
LocalEntityUseCases) over anEntitiesRepositoryyou implement on your storage (InMemEntitiesRepositoryincluded). withEntitieswires everything into aDartRosaConfig; withdartrosa_external_data'sExternalDataPluginin the config, entity lists answerpulldata()before CSV media, as in Collect.
Install #
dart pub add dartrosa_entities
Example #
import 'package:dartrosa/dartrosa.dart';
import 'package:dartrosa_entities/dartrosa_entities.dart';
Future<void> main() async {
final repository = InMemEntitiesRepository()
..save('people', [
NewEntity('a1', 'Shiv', properties: const [('full_name', 'Shiv Roy')]),
]);
final config = withEntities(
const DartRosaConfig(),
entitiesRepository: () => repository,
);
final definition = await FormDefinition.parse(entityFormXml, config: config);
final session = definition.createSession();
// ... answer questions ...
if (session.finalize() is FinalizeSuccess) {
print(formEntities(session)!.entities.map((e) => e.label));
saveFormEntities(session, repository); // the new person joins 'people'
}
}
See example/example.dart for the complete program with its form.
Documentation #
- API reference
- Documentation index
- Use CSV data and entities
- Plugins and extension points
- Getting started
- Compatibility matrix
- Migrating from JavaRosa
License #
Apache License 2.0 (see LICENSE). Ports ODK Collect's entities module (Apache-2.0); see the licensing notes.