@@ -513,7 +513,7 @@ class APIFormField {
513
513
isFilterOnline: true ,
514
514
showSearchBox: true ,
515
515
itemBuilder: (context, item, isSelected) {
516
- return _renderRelatedField (item, isSelected, true );
516
+ return _renderRelatedField (name, item, isSelected, true );
517
517
},
518
518
emptyBuilder: (context, item) {
519
519
return _renderEmptyResult ();
@@ -566,7 +566,7 @@ class APIFormField {
566
566
}
567
567
},
568
568
dropdownBuilder: (context, item) {
569
- return _renderRelatedField (item, true , false );
569
+ return _renderRelatedField (name, item, true , false );
570
570
},
571
571
onSaved: (item) {
572
572
if (item != null ) {
@@ -582,15 +582,32 @@ class APIFormField {
582
582
return false ;
583
583
}
584
584
585
- return item["pk" ] == selectedItem["pk" ];
585
+ return item["pk" ]. toString () == selectedItem["pk" ]. toString () ;
586
586
});
587
587
}
588
588
589
589
// Render a "related field" based on the "model" type
590
- Widget _renderRelatedField (dynamic item, bool selected, bool extended) {
590
+ Widget _renderRelatedField (String fieldName, dynamic item, bool selected, bool extended) {
591
591
592
592
// Convert to JSON
593
- var data = Map <String , dynamic >.from ((item ?? {}) as Map );
593
+ Map <String , dynamic > data = {};
594
+
595
+ try {
596
+ data = Map <String , dynamic >.from ((item ?? {}) as Map );
597
+ } catch (error, stackTrace) {
598
+ data = {};
599
+
600
+ sentryReportError (
601
+ "_renderRelatedField" , error, stackTrace,
602
+ context: {
603
+ "method" : "_renderRelateField" ,
604
+ "field_name" : fieldName,
605
+ "item" : item.toString (),
606
+ "selected" : selected.toString (),
607
+ "extended" : extended.toString (),
608
+ }
609
+ );
610
+ }
594
611
595
612
switch (model) {
596
613
case "part" :
@@ -599,7 +616,7 @@ class APIFormField {
599
616
600
617
return ListTile (
601
618
title: Text (
602
- part.fullname,
619
+ part.fullname,
603
620
style: TextStyle (fontWeight: selected && extended ? FontWeight .bold : FontWeight .normal)
604
621
),
605
622
subtitle: extended ? Text (
@@ -615,8 +632,8 @@ class APIFormField {
615
632
616
633
return ListTile (
617
634
title: Text (
618
- cat.pathstring,
619
- style: TextStyle (fontWeight: selected && extended ? FontWeight .bold : FontWeight .normal)
635
+ cat.pathstring,
636
+ style: TextStyle (fontWeight: selected && extended ? FontWeight .bold : FontWeight .normal)
620
637
),
621
638
subtitle: extended ? Text (
622
639
cat.description,
@@ -629,7 +646,7 @@ class APIFormField {
629
646
630
647
return ListTile (
631
648
title: Text (
632
- loc.pathstring,
649
+ loc.pathstring,
633
650
style: TextStyle (fontWeight: selected && extended ? FontWeight .bold : FontWeight .normal)
634
651
),
635
652
subtitle: extended ? Text (
@@ -654,25 +671,25 @@ class APIFormField {
654
671
case "company" :
655
672
var company = InvenTreeCompany .fromJson (data);
656
673
return ListTile (
657
- title: Text (company.name),
658
- subtitle: extended ? Text (company.description) : null ,
659
- leading: InvenTreeAPI ().getThumbnail (company.thumbnail)
674
+ title: Text (company.name),
675
+ subtitle: extended ? Text (company.description) : null ,
676
+ leading: InvenTreeAPI ().getThumbnail (company.thumbnail)
660
677
);
661
678
case "projectcode" :
662
679
var project_code = InvenTreeProjectCode .fromJson (data);
663
680
return ListTile (
664
- title: Text (project_code.code),
665
- subtitle: Text (project_code.description),
666
- leading: FaIcon (FontAwesomeIcons .list)
681
+ title: Text (project_code.code),
682
+ subtitle: Text (project_code.description),
683
+ leading: FaIcon (FontAwesomeIcons .list)
667
684
);
668
685
default :
669
686
return ListTile (
670
687
title: Text (
671
- "Unsupported model" ,
672
- style: TextStyle (
673
- fontWeight: FontWeight .bold,
674
- color: COLOR_DANGER
675
- )
688
+ "Unsupported model" ,
689
+ style: TextStyle (
690
+ fontWeight: FontWeight .bold,
691
+ color: COLOR_DANGER
692
+ )
676
693
),
677
694
subtitle: Text ("Model '${model }' rendering not supported" ),
678
695
);
0 commit comments