More complete generic type support #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In 734a064, generic type support was added, but it appears to be incomplete.
As a result, when running something like this:
it throws
_TypeError (type 'List<Node<dynamic>>' is not a subtype of type 'List<Node<NodeData>>?' of 'children')
.The error happens on this line in the library:
I don't have a comprehensive explanation why this happens. From printing
runtimeType
in various places and stepping through with the debugger, I'm seeing inconsistent output and it almost looks like a bug in the Dart tooling to me. However it seems to have something to do withwithExpandToNode(key)
returning a compile-time type ofTreeViewController<dynamic>
, which then results in conflicting types in the subsequentwithUpdateNode()
. Making the return type explicit fixes my use case.Dart 3.7
Flutter 3.29