Almost every language has some sort of requirement for where you put files to properly compose a library. Dart is one of the sanest I know of, just throw your stuff in `lib/mylib.dart`. This file is normally only used to `export` what your lib API should look like, and it's a convention that the implementations go in `lib/src/`. That's all there is! You can break up files apart any way you want from there. To import a file from another file you do `import 'relative/path/to/file.dart`. Dart doesn't care where your imported files are as long as it can find them. There's no "packages" like in Java, but that's never a problem because imports can be named.
So you do stuff like:
import 'mylib.dart' as mylib;
// call mylib function
main() => mylib.foo();
So simple, so great... I really can't understand why someone would complain about such an elegant system.I have looked at forking the language to explore an alternate system, but the path of least resistance has been using other languages.