Adaptive Widgets Flutter

Bring adaptive and responsive UI to life effortlessly with the adaptive_widgets_flutter package! 🌟 This package empowers you to create platform-specific UI components that seamlessly adapt to Android and iOS, ensuring a consistent and polished user experience.

With adaptive_widgets_flutter, you can build beautiful, functional, and adaptive UI elements with ease. Here's what you get:

✨ Key Features

  1. Refreshable ScrollView 🌀
    A pull-to-refresh scroll view that adapts its behavior to the platform.
  2. Alert Dialog ⚠️
    Fully customizable platform-specific alert dialogs.
  3. Bottom Action Sheet 🛠️
    Native-style bottom action sheets for user actions.
  4. Date Picker 📅
    Intuitive and native platform-style date pickers.
  5. Time Picker(New!)
    Select times with a platform-adaptive interface.

🛠 Usage Examples

1. Refreshable ScrollView

Effortlessly create a scrollable view with pull-to-refresh functionality.

AdaptiveRefreshableScrollView(
  padding: const EdgeInsets.all(20),
  onRefresh: () async {
    await Future.delayed(const Duration(seconds: 2));
  },
  slivers: [
    // Your Sliver widgets go here
  ],
);

🎥 GIF Previews:
iOS:
Refreshable ScrollView on iOS
Android:
Refreshable ScrollView on Android


2. Alert Dialog

Display platform-native alert dialogs with ease.

CupertinoButton.filled(
  onPressed: () async {
    await AdaptiveWidgets.showDialog(
      context,
      title: 'Sample Title',
      content: 'Sample Content',
      actionButtons: [
        AdaptiveDialogButtonBuilder(
          text: 'OK',
          onPressed: (context) {
            Navigator.of(context).pop();
          },
        ),
      ],
    );
  },
  child: const Text('Show Dialog'),
);

📸 Screenshots:
iOS:
Alert Dialog on iOS
Android:
Alert Dialog on Android


3. Bottom Action Sheet

Create platform-specific bottom action sheets for user actions.

CupertinoButton.filled(
  onPressed: () async {
    final actionButtons = [
      AdaptiveBottomSheetButtonBuilder(
        child: const Text('Action 1'),
        onPressed: (context) => Navigator.of(context).pop('action 1'),
      ),
     AdaptiveBottomSheetButtonBuilder(
        child: Row(
          mainAxisSize: MainAxisSize.min,
          children: [
            Icon(Icons.adaptive.share),
            const SizedBox(width: 10),
            const Text('Share'),
          ],
        ),
      ),
      AdaptiveBottomSheetButtonBuilder(child: const Text('Cancel'), isCancelAction: true),
      AdaptiveBottomSheetButtonBuilder(child: const Text('Action 3')),
    ];

    final result = await AdaptiveWidgets.showBottomActionSheet(
      context,
      actionButtons: actionButtons,
      title: const Text('Sample Title'),
      message: const Text('Sample Message'),
    );
    debugPrint(result);
  },
  child: const Text('Show Bottom Action Sheet'),
);

📸 Screenshots:
iOS:
Bottom Action Sheet on iOS
Android:
Bottom Action Sheet on Android


4. Date Picker

Pick dates with a native platform-style interface.

CupertinoButton.filled(
  onPressed: () async {
    await AdaptiveWidgets.showDatePicker(context);
  },
  child: const Text('Show Date Picker'),
);

📸 Screenshots:
iOS:
Date Picker on iOS
Android:
Date Picker on Android


5. Time Picker (New!)

A modern and native time picker for seamless time selection.

CupertinoButton.filled(
  onPressed: () async {
    await AdaptiveWidgets.showTimePicker(context);
  },
  child: const Text('Show Time Picker'),
);

🎥 GIF Previews:
iOS:
Time Picker on iOS
Android:
Time Picker on Android


🚀 Get Started

Integrate adaptive_widgets_flutter into your project and elevate your UI to new heights. Visit the documentation for detailed guidance.


📜 License

This project is licensed under the MIT License - see the LICENSE file for details.