[cross_file] Adding custom sources to feed data to XFile
#6625
+393
−72
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.
This PR adds a new constructor for
XFile
(XFile.fromCustomSource
) that only takes an implementation of a new abstract classXFileSource
. This new class enables users of thecross_file
plugin to construct anXFile
and have outputs totally managed by the user.I removed multiple TODOs as the version required to remove them was met.
New tests have also been added for this new constructor for both
dart:io
and web versions.NOTE: I got the web version tests to run in a suboptimal environment because of flutter/flutter-intellij#5550, although it seemed like it didn't change the behavior of the tests.
It seems like a move to a federated plugin for cross_file is in the works (flutter/flutter#91869), it could split
XFile
into multiple classes and break this PR. Should this feature be delayed for the move to a federated or do we merge now and see how it goes then improve it via feedback when the package will be federated?This PR will enable support for
content:https://
URIs to be implemented withXFile
s (It is the first step to close flutter/flutter#147037).Pre-launch Checklist
dart format
.)[shared_preferences]
pubspec.yaml
with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.CHANGELOG.md
to add a description of the change, following repository CHANGELOG style.///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.