adaptive_ui_intent 0.0.1
adaptive_ui_intent: ^0.0.1 copied to clipboard
Intent-based adaptive UI for Flutter that helps developers build responsive layouts based on user intent such as reading, input, monitoring, navigation, and media consumption instead of device-specific checks.
π¦ adaptive_ui_intent #
Intent-based adaptive UI for Flutter Design layouts based on what the user is doing, not what device they are on.
β¨ Why adaptive_ui_intent? #
Most Flutter apps adapt UI like this:
if (width > 600) ...
if (Platform.isIOS) ...
if (isTablet) ...
This package introduces a new way of thinking:
π Adapt UI based on intent (reading, input, monitoring, media, navigation)
π§ Core Concept: UI Intent #
Instead of device checks, you declare intent:
AdaptiveIntent(
intent: UIIntent.monitoring,
builder: (context, config) {
return GridView(
crossAxisCount: config.columns,
);
},
);
The package automatically decides:
- Columns
- Spacing
- Max width
- Aspect ratio based on screen size + platform + intent
π― Supported UI Intents #
enum UIIntent {
reading,
navigation,
input,
monitoring,
media,
}
| Intent | Best for |
|---|---|
reading |
Articles, blogs, text-heavy screens |
navigation |
Menus, dashboards, app navigation |
input |
Forms, login, data entry |
monitoring |
Charts, analytics, stats |
media |
Video, images, galleries |
π Installation #
Add to your pubspec.yaml:
dependencies:
adaptive_ui_intent: ^0.1.0
Then run:
flutter pub get
π§© Basic Usage #
AdaptiveIntent(
intent: UIIntent.reading,
builder: (context, config) {
return Padding(
padding: EdgeInsets.all(config.spacing),
child: ConstrainedBox(
constraints: BoxConstraints(maxWidth: config.maxWidth),
child: Text(
longArticleText,
style: Theme.of(context).textTheme.bodyLarge,
),
),
);
},
);
βοΈ IntentConfig Explained #
The builder provides an IntentConfig:
class IntentConfig {
final int columns;
final double maxWidth;
final double spacing;
final double aspectRatio;
}
Use it to drive layout decisions, not widget logic.
π Example: Monitoring Dashboard #
AdaptiveIntent(
intent: UIIntent.monitoring,
builder: (context, config) {
return GridView.count(
crossAxisCount: config.columns,
childAspectRatio: config.aspectRatio,
children: List.generate(
6,
(i) => Card(child: Center(child: Text('Chart $i'))),
),
);
},
);
β Phone β single column β Tablet β grid layout β Web β wide dashboard
π¨ Platform Awareness (Built-in) #
The package automatically adapts for:
- π± Phone vs Tablet
- π₯οΈ Web
- π iOS spacing
- π€ Android spacing
No platform checks needed.
π§ͺ Example App #
cd example
flutter run
Resize the window or switch devices to see intent-based adaptation.
π£οΈ Roadmap #
Planned features:
- π Custom intent overrides
- βΏ Accessibility-aware intents
- β WearOS / small-screen presets
- π Foldable device support
π€ Contributing #
- Fork the repository
- Create a feature branch
- Add tests if possible
- Submit a pull request
Small improvements are welcome π
π License #
MIT License Free for personal and commercial use.