diff --git a/dart/test/keyword_test_keyword_test_generated.dart b/dart/test/keyword_test_keyword_test_generated.dart index e0118af16..b9f764006 100644 --- a/dart/test/keyword_test_keyword_test_generated.dart +++ b/dart/test/keyword_test_keyword_test_generated.dart @@ -276,7 +276,7 @@ class Table2 { Table2T unpack() => Table2T( typeType: typeType, - type: type); + type: type?.unpack()); static int pack(fb.Builder fbBuilder, Table2T? object) { if (object == null) return 0; diff --git a/dart/test/monster_test_my_game.example_generated.dart b/dart/test/monster_test_my_game.example_generated.dart index 7be3afa89..652b4509f 100644 --- a/dart/test/monster_test_my_game.example_generated.dart +++ b/dart/test/monster_test_my_game.example_generated.dart @@ -1337,7 +1337,7 @@ class Monster { ).vTableGetNullable(_bc, _bcOffset, 14), color: color, testType: testType, - test: test, + test: test?.unpack(), test4: test4?.map((e) => e.unpack()).toList(), testarrayofstring: const fb.ListReader( fb.StringReader(), @@ -1405,9 +1405,9 @@ class Monster { lazy: false, ).vTableGetNullable(_bc, _bcOffset, 88), anyUniqueType: anyUniqueType, - anyUnique: anyUnique, + anyUnique: anyUnique?.unpack(), anyAmbiguousType: anyAmbiguousType, - anyAmbiguous: anyAmbiguous, + anyAmbiguous: anyAmbiguous?.unpack(), vectorOfEnums: const fb.ListReader( Color.reader, lazy: false, diff --git a/src/idl_gen_dart.cpp b/src/idl_gen_dart.cpp index 52fc8772f..e2a060c97 100644 --- a/src/idl_gen_dart.cpp +++ b/src/idl_gen_dart.cpp @@ -606,7 +606,8 @@ class DartGenerator : public BaseGenerator { std::string defaultValue = getDefaultValue(field.value); bool isNullable = defaultValue.empty() && !struct_def.fixed; std::string nullableValueAccessOperator = isNullable ? "?" : ""; - if (type.base_type == BASE_TYPE_STRUCT) { + if (type.base_type == BASE_TYPE_STRUCT || + type.base_type == BASE_TYPE_UNION) { constructor_args += field_name + nullableValueAccessOperator + ".unpack()"; } else if (type.base_type == BASE_TYPE_VECTOR) { diff --git a/tests/monster_test_my_game.example_generated.dart b/tests/monster_test_my_game.example_generated.dart index 5554c4c4b..dc54f323f 100644 --- a/tests/monster_test_my_game.example_generated.dart +++ b/tests/monster_test_my_game.example_generated.dart @@ -1213,7 +1213,7 @@ class Monster { inventory: const fb.Uint8ListReader(lazy: false).vTableGetNullable(_bc, _bcOffset, 14), color: color, testType: testType, - test: test, + test: test?.unpack(), test4: test4?.map((e) => e.unpack()).toList(), testarrayofstring: const fb.ListReader(fb.StringReader(), lazy: false).vTableGetNullable(_bc, _bcOffset, 24), testarrayoftables: testarrayoftables?.map((e) => e.unpack()).toList(), @@ -1249,9 +1249,9 @@ class Monster { nonOwningReference: nonOwningReference, vectorOfNonOwningReferences: const fb.ListReader(fb.Uint64Reader(), lazy: false).vTableGetNullable(_bc, _bcOffset, 88), anyUniqueType: anyUniqueType, - anyUnique: anyUnique, + anyUnique: anyUnique?.unpack(), anyAmbiguousType: anyAmbiguousType, - anyAmbiguous: anyAmbiguous, + anyAmbiguous: anyAmbiguous?.unpack(), vectorOfEnums: const fb.ListReader(Color.reader, lazy: false).vTableGetNullable(_bc, _bcOffset, 98), signedEnum: signedEnum, testrequirednestedflatbuffer: const fb.Uint8ListReader(lazy: false).vTableGetNullable(_bc, _bcOffset, 102),