center_spot 0.1.0
center_spot: ^0.1.0 copied to clipboard
A frame-free Flutter viewport preview for testing responsive layouts at fixed logical sizes.
center_spot #
A small, frame-free Flutter viewport preview for responsive UI development.
CenterSpot centers an application at a fixed logical size and exposes that
size through MediaQuery, without adding a device frame, toolbar, or runtime
settings panel.
Features #
- Preview an app at a predictable logical viewport size.
- Scale the preview down automatically when the host window is smaller.
- Keep the preview centered, or place it with a custom alignment.
- Use built-in phone and tablet presets or define your own.
- Switch any preset to landscape orientation.
- Enable or disable the preview without changing the widget tree.
- Run on Android, iOS, Linux, macOS, web, and Windows.
Getting started #
Add the package to your application:
flutter pub add center_spot
Import it and wrap the child from MaterialApp.builder or
WidgetsApp.builder:
import 'package:center_spot/center_spot.dart';
import 'package:flutter/material.dart';
MaterialApp(
builder: (context, child) => CenterSpot(
preset: ViewportPresets.mediumPhone,
child: child!,
),
home: const HomePage(),
);
Putting CenterSpot in the app builder ensures that routes, dialogs, and
overlays receive the simulated MediaQuery.
Presets #
The package includes these logical viewport sizes:
| Preset | Size |
|---|---|
ViewportPresets.compactPhone |
360 × 800 |
ViewportPresets.mediumPhone |
390 × 844 |
ViewportPresets.largePhone |
430 × 932 |
ViewportPresets.tablet |
768 × 1024 |
Create a custom preset when your design uses another size:
const mobile = ViewportPreset(
name: 'Design mobile',
size: Size(375, 812),
);
Use mobile.landscape to swap its width and height.
Customization #
CenterSpot can be positioned and styled to suit the host window:
CenterSpot(
enabled: isPreviewEnabled,
preset: ViewportPresets.tablet.landscape,
alignment: Alignment.topCenter,
backgroundColor: const Color(0xFF101114),
clipBehavior: Clip.antiAlias,
child: child,
)
When the host is larger than the preset, the viewport keeps its logical size.
When the host is smaller, the viewport scales down uniformly while its child
continues to receive the preset size from MediaQuery.
See the complete runnable application in the example directory.
Platform support #
center_spot uses only Flutter's platform-independent widget APIs and supports
Android, iOS, Linux, macOS, web, and Windows.
License #
This project is available under the MIT License.