Fix: Prevent newRequestOptions from being generated for all services after first @DioOptions() usage #808
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.
Problem
When using
@DioOptions()parameter annotation in any service method, the helper methodnewRequestOptions()was being generated not only for that service but for all subsequently processed services, even those that never use@DioOptions(). This led to:Example of the issue:
Before the fix:
newRequestOptions(processed first)newRequestOptions(uses @DioOptions)newRequestOptions(incorrectly inherited from ServiceB)After the fix:
newRequestOptionsnewRequestOptionsnewRequestOptionsRoot Cause
The
hasCustomOptionsinstance variable inRetrofitGeneratorwas never reset between processing different service classes. Once set totrueby a service using@DioOptions(), it remainedtruefor all subsequent class generations, causing state leakage.Solution
Reset
hasCustomOptions = falseat the start of each class generation in the_implementClass()method. This ensures each service class is generated independently without state pollution.Changes
@DioOptionsdon't get the helper methodTesting
CustomOptions(with @DioOptions) correctly generatesnewRequestOptions()methodServiceWithoutCustomOptions(without @DioOptions) correctly does NOT generatenewRequestOptions()methodFixes the issue reported where
newRequestOptionswas being generated for every service after the first@DioOptions()usage.Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
https://storage.googleapis.com/flutter_infra_release/flutter/d2913632a4578ee4d0b8b1c4a69888c8a0672c4b/dart-sdk-linux-x64.zipcurl --retry 3 --continue-at - --location --output /tmp/flutter/bin/cache/dart-sdk-linux-x64.zip REDACTED(http block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
Fixes #764
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.