getDynamicObjectField method
Fetch the child object of a dynamic OBJECT field on parentId.
Implementation
Future<Object> getDynamicObjectField(
String parentId,
String nameType,
Uint8List nameBcs, {
List<String>? readMask,
}) async {
final resolvedType = await resolveType(nameType);
final wrapperType = '0x2::dynamic_object_field::Wrapper<$resolvedType>';
final wrapperId = deriveDynamicFieldID(parentId, wrapperType, nameBcs);
final field = await getObject(wrapperId, readMask: const [
'object_id',
'version',
'digest',
'object_type',
'contents',
]);
// Field<Wrapper<Name>, ID> content = [parent(32)][name bcs][childId(32)].
final content = Uint8List.fromList(field.contents.value);
final start = 32 + nameBcs.length;
final childBytes = content.sublist(start, start + 32);
final childId = '0x${_hex(childBytes)}';
return getObject(childId, readMask: readMask);
}