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:


@override
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