(
self,
field_type: FieldType,
value_expr: str,
nullable: bool = False,
parent_stack: Optional[List[Message]] = None,
)
| 459 | return not isinstance(field_type, (ListType, ArrayType, MapType)) |
| 460 | |
| 461 | def _conversion_expression( |
| 462 | self, |
| 463 | field_type: FieldType, |
| 464 | value_expr: str, |
| 465 | nullable: bool = False, |
| 466 | parent_stack: Optional[List[Message]] = None, |
| 467 | ) -> str: |
| 468 | parent_stack = parent_stack or [] |
| 469 | if nullable: |
| 470 | converted = self._conversion_expression( |
| 471 | field_type, |
| 472 | value_expr, |
| 473 | False, |
| 474 | parent_stack, |
| 475 | ) |
| 476 | return f"{value_expr} == null ? null : {converted}" |
| 477 | if isinstance(field_type, PrimitiveType): |
| 478 | return f"{value_expr} as {self.dart_type(field_type, False, parent_stack)}" |
| 479 | if isinstance(field_type, NamedType): |
| 480 | return f"{value_expr} as {self.dart_type(field_type, False, parent_stack)}" |
| 481 | if isinstance(field_type, ListType): |
| 482 | element_type = self.dart_type( |
| 483 | field_type.element_type, |
| 484 | field_type.element_optional, |
| 485 | parent_stack, |
| 486 | ) |
| 487 | list_type = self._typed_array_or_list(field_type, parent_stack) |
| 488 | if list_type != f"List<{element_type}>": |
| 489 | return f"{value_expr} as {list_type}" |
| 490 | if self._supports_direct_container_cast( |
| 491 | field_type.element_type, |
| 492 | parent_stack, |
| 493 | ): |
| 494 | return f"List.castFrom<dynamic, {element_type}>({value_expr} as List)" |
| 495 | converted_item = self._conversion_expression( |
| 496 | field_type.element_type, |
| 497 | "item", |
| 498 | field_type.element_optional, |
| 499 | parent_stack, |
| 500 | ) |
| 501 | return f"List<{element_type}>.of((({value_expr} as List)).map((item) => {converted_item}))" |
| 502 | if isinstance(field_type, ArrayType): |
| 503 | array_type = self._dense_array_type(field_type) |
| 504 | return f"{value_expr} as {array_type}" |
| 505 | if isinstance(field_type, MapType): |
| 506 | key_type = self.dart_type(field_type.key_type, False, parent_stack) |
| 507 | value_type = self.dart_type(field_type.value_type, False, parent_stack) |
| 508 | if self._supports_direct_container_cast( |
| 509 | field_type.key_type, parent_stack |
| 510 | ) and self._supports_direct_container_cast( |
| 511 | field_type.value_type, parent_stack |
| 512 | ): |
| 513 | return f"Map.castFrom<dynamic, dynamic, {key_type}, {value_type}>({value_expr} as Map)" |
| 514 | converted_key = self._conversion_expression( |
| 515 | field_type.key_type, |
| 516 | "key", |
| 517 | False, |
| 518 | parent_stack, |
no test coverage detected