implementation_ imports
Learn about the implementation_imports linter rule.
Don't import implementation files from another package.
Details
#From the pub package layout doc:
DON'T import implementation files from another package.
The libraries inside lib are publicly visible: other packages are free to import them. But much of a package's code is internal implementation libraries that should only be imported and used by the package itself. Those go inside a subdirectory of lib called src. You can create subdirectories in there if it helps you organize things.
You are free to import libraries that live in lib/src from within other Dart code in the same package (like other libraries in lib, scripts in bin, and tests) but you should never import from another package's lib/src directory. Those files are not part of the package's public API, and they might change in ways that could break your code.
BAD:
// In 'road_runner' import 'package:acme/src/internals.dart';
Enable
# To enable the implementation_imports rule, add implementation_imports under linter > rules in your analysis_options.yaml file:
linter: rules: - implementation_imports If you're instead using the YAML map syntax to configure linter rules, add implementation_imports: true under linter > rules:
linter: rules: implementation_imports: true Unless stated otherwise, the documentation on this site reflects Dart 3.10.3. Report an issue.