You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Auto add builder factories for nested built_collection classes #1254
Yes, it's necessary to add builder factories manually in some cases.
It's true that you could add fields as in your second post so the builder factories get generated for you, but then you will end up with a very weird class :) ... maybe you could put all such fields in a single class that you don't use, as a more convenient way to add builder factories.
Sorry that this part of built_value is so awkward, there is a long standing feature request to improve it but I haven't had a chance to tackle it!
changed the title [-]When using BuiltMap nesting, is it not automatically created?[/-][+]Auto add builder factories for nested built_collection classes[/+]on Dec 22, 2023
I was considering using built_value for a project, but this is a big deal to me. The amount of boilerplate can be huge and hard to write.
@pierremrtn I understand that concern. For a current project (which internally uses built_value with the Dio OpenAPI generator) the value gained form this package much outweighs the extra effort / headache caused by this.
For the case where we now want to deal with e.g. BuiltMap<String, BuiltList<Foo>> I added a helper method:
extensiononSerializersBuilder {
/* Adds support for values of type `BuiltMap<Key, BuiltList<Value>>` */voidaddMapOfList<Key, Value>() {
addBuilderFactory(
FullType(BuiltMap, [
FullType(Key),
FullType(
BuiltList,
[FullType(Value)],
)
]),
() =>newMapBuilder<Key, BuiltList<Value>>(),
);
addBuilderFactory(
FullType(BuiltList, [FullType(Value)]),
() =>newListBuilder<Value>(),
);
}
}
With that we only have to call addMapOfList<String, X>() for each case on the SerializersBuilder on init. So after the initial setup this is now easy to use, should this ever come up again.
Maybe this helps anyone else to work around this problem quickly until it's supported via code generation.
Activity
JosephNK commentedon Jun 3, 2023
I added the following code for auto-generation.
Is it correct to use it like this?
davidmorgan commentedon Jun 5, 2023
Yes, it's necessary to add builder factories manually in some cases.
It's true that you could add fields as in your second post so the builder factories get generated for you, but then you will end up with a very weird class :) ... maybe you could put all such fields in a single class that you don't use, as a more convenient way to add builder factories.
Sorry that this part of
built_valueis so awkward, there is a long standing feature request to improve it but I haven't had a chance to tackle it![-]When using BuiltMap nesting, is it not automatically created?[/-][+]Auto add builder factories for nested built_collection classes[/+]pierremrtn commentedon Sep 1, 2024
I was considering using built_value for a project, but this is a big deal to me. The amount of boilerplate can be huge and hard to write.
tp commentedon Oct 19, 2024
@pierremrtn I understand that concern. For a current project (which internally uses
built_valuewith theDioOpenAPI generator) the value gained form this package much outweighs the extra effort / headache caused by this.For the case where we now want to deal with e.g.
BuiltMap<String, BuiltList<Foo>>I added a helper method:With that we only have to call
addMapOfList<String, X>()for each case on theSerializersBuilderon init. So after the initial setup this is now easy to use, should this ever come up again.Maybe this helps anyone else to work around this problem quickly until it's supported via code generation.