In this chapter, we have seen how the Dart language is structured in terms of the OOP paradigm. We have seen that the language proposes to provide all of the features to the developer when using the OOP paradigm, but also some particularities that are meant to extend developer possibilities, such as mixins for exploring multi-inheritance benefits and implicit interfaces that permit any class to be implemented by any other class, callable classes to add function behavior to simple objects, and top-level functions and variables that do not need to be bound to any class. It is very useful for utility functions that do not depend on context.
We explored how the Dart packages are structured, how to use the pub tool to add dependencies to the project, and use third-party packages. We have checked the multiple ways to structure a library, and how it composes a Dart package. Additionally...