http
http copied to clipboard
Separate HTTP Client interface in its own package.
package:http Client is an vital interface whose different implementations can be used to implement different supports/packages for http requests, such as enabling http/3 support or using Java APIs to resolve requests.
The same interface is used in Cronet for example to add cronet support in Flutter. However, it uses http as a dependency regardless of the fact that the package uses nothing except implementation of BaseClient from the http package
On the other hand, we have packages like http2 that do not conform to the package:http Client. This makes refactoring to a different (non-conforming) http package difficult.
Separating out the interface in a new unlisted package would facilitate the development of new http packages without adding package:http as the dependency.