Yes, Lance Johnston wrote a library package that attempts to match up every Material widget with its Cupertino equivalent. Indeed, an almost epic endeavour. Here are but a few examples:

With each ‘platform’ widget offered, it comes down to determining then which theme to use based on which environment the app’s running on:

Widget build(BuildContext context) {
if (isMaterial(context)) {
return createAndroidWidget(context);
} else if (isCupertino(context)) {
return createIosWidget(context);

return throw new UnsupportedError(
'This platform is not supported: $defaultTargetPlatform');

An amazing effort. This article’s approach distinguishes the interface by simply offering the developer a means to wholeheartedly separate the interface code into individual files and directories using Flutter’s existing code — allowing, for example, better-managed team development, and forcing you frankly to learn the Widgets used in each theme yourself.

Freelance Developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store