Package types

Packages can contain more than one kind of content:

General packages written in Dart,
for example the path package.
Some of these might contain Flutter specific
functionality and thus have a dependency on the
Flutter framework, restricting their use to Flutter only,
for example the fluro package.

A specialized Dart package that contains an API written in
Dart code combined with one or more platform-specific
implementations.

    Plugin packages can be written for Android
(using Kotlin or Java), iOS (using Swift or Objective-C),
web, macOS, Windows, or Linux, or any combination
thereof.

    A concrete example is the url_launcher plugin package.
To see how to use the url_launcher package, and how it
was extended to implement support for web,
see the Medium article by Harry Terkelsen,
How to Write a Flutter Web Plugin, Part 1.