Giter VIP home page Giter VIP logo

flutter_device_preview's Introduction

Device Preview for Flutter

Approximate how your app looks and performs on another device.

Device Preview for Flutter

Features

  • 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

Quickstart

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'),
    );
  }
}

Customization

enabled

This property can be used to disable the preview.

Example
DevicePreview(
  enabled: !kReleaseMode, // Ensures that it is disabled in release mode
  builder: (context) => MyApp(),
)

usePreferences

Indicates whether the configuration should be persisted between sessions.

Example
DevicePreview(
  usePreferences: false,
  builder: (context) => MyApp(),
)

areSettingsEnabled

Indicates whether the settings menu should be available.

Example
DevicePreview(
  areSettingsEnabled: false,
  builder: (context) => MyApp(),
)

background

The decoration used as the preview window background.

Example
DevicePreview(
  background: BoxDecoration(color: Colors.red),
  builder: (context) => MyApp(),
)

toolBarStyle

The style of the bottom toolbar.

DevicePreview(
  toolBarStyle: DevicePreviewToolBarStyle.light(),
  builder: (context) => MyApp(),
)

onScreenshot

The processor used when the user takes a new screenshots.

By default, all screenshots are uploaded to file.io and the links are printed into the debugging console.

Example
DevicePreview(
  onScreenshot: (screenshot) {
    final bytes = screenshot.bytes;
    //  Send the bytes to a drive, to the file system, to 
    // the device gallery for example. It may be useful for
    // preparing your app release for example.
  },
  builder: (context) => MyApp(),
)

Limitations

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.

FAQ

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:
shared_preferences_fde:
  git:
    url: https://github.com/google/flutter-desktop-embedding/
    path: plugins/flutter_plugins/shared_preferences_fde

This is a temporary solution only. More information about this plug-in can be found here.

Ideas and roadmap

  • Status bar
  • Override WidgetsBinding
    • Simulate physical button
    • Simulate lifecycle events
  • Favorite devices
  • More device filters : device type, search by name.
  • Storage explorer
  • Add custom predefineded devices
  • Desktop devices
  • TV devices
  • Complete documentation

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.