google / json_serializable.dart

Generates utilities to aid in serializing to/from JSON.
https://pub.dev/packages/json_serializable
BSD 3-Clause "New" or "Revised" License
1.55k stars 397 forks source link

Cannot populate the required constructor argument: elementInfo. It is assigned to a field not meant to be used in fromJson. #1384

Open MikePendo opened 9 months ago

MikePendo commented 9 months ago

Hi, So I guess my issue coz of some generics that I used I am wondering if there is some work around. So in general I have a Tree, TreeElement, and ElementInfo

class DataTree implements Tree<TreeElement, Element> {
    late TreeElement _root;
...
}
 class TreeElement<T extends InternalElementTreeInfo> implements TreeNode {
  T _elementInfo;
  TreeElement({ required T elementInfo }) : _elementInfo = elementInfo; <-- This is line 18

on dart run build_runner build --delete-conflicting-outputs I got the following error: Cannot populate the required constructor argument: elementInfo. It is assigned to a field not meant to be used in fromJson. package:pendo_sdk/src/tree/tree_element.dart:18:3 Must admit I dont really understand the error, any suggestion of how I can overcome it?

MikePendo commented 9 months ago

ok adding

TreeElement._() : _elementInfo = ElementInfo.rootElementInfo() as T; and using @JsonSerializable(explicitToJson: true, constructor: '_') seems like generates without errors

MikePendo commented 9 months ago

Strange the generation seem fine but when I run my package in the app I get the following error: Error: Method not found: '_$DataTree'.