- Preview any device from any device
- Change device orientation
- Dynamic system configuration: language, dark mode, text scaling factor
- Freeform device with adjustable resolution and safe areas
- Keep the application state
- Take screenshots
void main() => runApp(
DevicePreview(
builder: (context) => MyApp(),
),
);
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
locale: DevicePreview.of(context).locale, // <--- Add the locale
builder: DevicePreview.appBuilder, // <--- Add the builder
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
Think of Device Preview as a first-order approximation of how your app looks and feels on a mobile device. With Device Mode you don't actually run your code on a mobile device. You simulate the mobile user experience from your laptop, desktop or tablet.
There are some aspects of mobile devices that Device Preview will never be able to simulate. When in doubt, your best bet is to actually run your app on a real device.
What devices can I use for previewing?
If you are running the stable
, beta
or dev
channel of Flutter, you can use Android or iOS.
If you are running the master
channel of Flutter, you can use macOS, Android or iOS.
What about Windows?
Since Flutter is still in technical preview on Windows, the path_provider
dependency can be satisfied by adding this dependency in your pubspec.yaml
if you are on the master
channel of Flutter:
device_preview:
path_provider_fde:
git:
url: https://github.com/google/flutter-desktop-embedding/
path: plugins/flutter_plugins/path_provider_fde
This is a temporary solution only. More information about this plug-in can be found here.
- Status bar
- Override WidgetsBinding
- Simulate physical button
- Simulate lifecycle events
- Storage explorer
- Add custom devices state
- Desktop devices
- TV devices
- Complete documentation