Flutter package to automatically build widgets according to the platform. Only Android & iOS.


Getting started

Add adaptive dependency: dependencies: adaptive: 0.0.1


Adaptive App With this widget you can easly set up the root of your application. It accepts different parameters, common to both platform Android and iOS; also, the user can customize more the theme of the App by passing a ThemeData (used for Android theme) and a CupertinoThemeData (used for iOS).

class AppRoot extends StatelessWidget {
  const AppRoot({Key? key}) : super(key: key);
    Widget build(BuildContext context) {
        return AdaptiveApp(
            showDebugBanner: false,
            cupertinoApp: AppVars.cupertinoTheme(),
            materialApp: AppVars.materialTheme(),
            title: AppVars.appName,
            initialRoute: AppRouter.splashPage,
            onGenerateRoute: AppRouter.onGenerateRoute,
            supportedLocales: AppTranslations.supportedLocales,
            localizationsDelegates: AppTranslations.localizationsDelegates,

Adaptive Button Similar to the one above, this widget reders an ElevatedButton when the platform is Android, or a CupertinoButton when it's iOS. The widget acceps different parameters:

  • onPressed
  • child
  • padding
  • size
  • minimumSize
  • borderRadius
  • primaryColor
  • elevation
  • specialMaterialStyle

Also, if you pass a ButtonStyle to 'specialMaterialStyle', the Material version of the button will apply the given style.

    onPressed: () {
        // on pressed event
    size: const Size(160, 50),
    primaryColor: Colors.red,
    child: Text(
    'I\'m bi-platform!',
    style: const TextStyle(fontSize: 20, color: Colors.black),

Adaptive Scaffold Same thing here. This widget accepts these parameters:

  • child
  • resizeToAvoidBottomInset
  • cupertinoNavigationBar
  • backgroundColor
  • specialScaffold

If you pass a Scaffold widget to 'specialScaffold', it will be rendered for Android.

  Widget build(BuildContext context) {
    return AdaptiveScaffold(
      child: SafeArea(
        child: Column(
          children: [
            const Text('Awsome'),

Additional information

For now this package contains few widget, but i'll add other stuff as the time goes by.