Approximate how your app looks and performs on another device.

Overview

Device Preview for Flutter

Approximate how your app looks and performs on another device.

Device Preview for Flutter

Main features

  • Preview any device from any device
  • Change the device orientation
  • Dynamic system configuration (language, dark mode, text scaling factor, ...)
  • Freeform device with adjustable resolution and safe areas
  • Keep the application state
  • Plugin system (Screenshot, File explorer, ...)
  • Customizable plugins

Quickstart

Add dependency to your pubspec file

Since Device Preview is a simple Dart package, you have to declare it as any other dependency in your pubspec.yaml file.

dependencies:
  device_preview: <latest version>

Add DevicePreview

Wrap your app's root widget in a DevicePreview and make sure to :

  • Set your app's useInheritedMediaQuery to true.
  • Set your app's builder to DevicePreview.appBuilder.
  • Set your app's locale to DevicePreview.locale(context).

Make sure to override the previous properties as described. If not defined, MediaQuery won't be simulated for the selected device.

import 'package:device_preview/device_preview.dart';

void main() => runApp(
  DevicePreview(
    enabled: !kReleaseMode,
    builder: (context) => MyApp(), // Wrap your app
  ),
);

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      useInheritedMediaQuery: true,
      locale: DevicePreview.locale(context),
      builder: DevicePreview.appBuilder,
      theme: ThemeData.light(),
      darkTheme: ThemeData.dark(),
      home: const HomePage(),
    );
  }
}

Documentation

Open the website

Demo

Open the demo

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.

Comments
  • Flutter Web - 'List<Locale>' Error

    Flutter Web - 'List' Error

    When upgrading from device_preview: ^0.6.2-beta to device_preview: ^0.7.1 I am getting this error:

    /C:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/device_preview-0.7.1/lib/src/state/store.dart:79:43: Error: The argument type 'List?' can't be assigned to the parameter type 'List' because 'List?' is nullable and 'List' isn't.

    • 'List' is from 'dart:core'.
    • 'Locale' is from 'dart:ui'. WidgetsBinding.instance!.window.locales,

    Does anyone know how to fix this?

    bug 
    opened by MikeSchrijver 10
  • No Material Localization error in the list of devices.

    No Material Localization error in the list of devices.

    Unable see the device options even using for the general demo app.

    No Material Localization error in the list of devices and local menu.

    Screenshot_20200710-204204.png

    Screenshot_20200710-205341.png

    Following is the code I am testing device_preview 0.4.7 with.

    import 'package:device_preview/device_preview.dart';
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(DevicePreview(builder: (context) => MyApp()));
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          locale: DevicePreview.of(context).locale, // <--- Add the locale
          builder: DevicePreview.appBuilder,
          theme: ThemeData(
            primarySwatch: Colors.blue,
            visualDensity: VisualDensity.adaptivePlatformDensity,
          ),
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
    
      final String title;
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      int _counter = 0;
    
      void _incrementCounter() {
        setState(() {
          _counter++;
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(widget.title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text(
                  'You have pushed the button this many times:',
                ),
                Text(
                  '$_counter',
                  style: Theme.of(context).textTheme.headline4,
                ),
              ],
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: Icon(Icons.add),
          ),
        );
      }
    }
    

    Following is my fluter doctor summary

    [√] Flutter (Channel master, 1.20.0-8.0.pre.41, on Microsoft Windows [Version 10.0.18363.900], locale en-US)
        • Flutter version 1.20.0-8.0.pre.41 at C:\Abhilash\Installs\flutter
        • Framework revision fd80503fd3 (10 hours ago), 2020-07-10 14:41:02 +0530
        • Engine revision 9b3e3410f0
        • Dart version 2.9.0 (build 2.9.0-21.0.dev 06cb010247)
    
    [√] Android toolchain - develop for Android devices (Android SDK version 29.0.0)
        • Android SDK at C:\Users\abhil\AppData\Local\Android\sdk
        • Platform android-29, build-tools 29.0.0
        • Java binary at: C:\Abhilash\Installs\Android\Android Studio\jre\bin\java
        • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
        • All Android licenses accepted.
    
    [√] Chrome - develop for the web
        • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
    
    [√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.5.4)
        • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
        • Visual Studio Community 2019 version 16.5.30011.22
        • Windows 10 SDK version 10.0.17763.0
    
    [√] Android Studio (version 4.0)
        • Android Studio at C:\Abhilash\Installs\Android\Android Studio
        • Flutter plugin version 47.1.2
        • Dart plugin version 193.7361
        • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    
    [√] Connected device (6 available)
        • 010229610904 (mobile) • 010229610904       • android-arm    • Android null (API null)
        • Mi A1 (mobile)        • 192.168.0.102:5555 • android-arm64  • Android 9 (API 28)
        • Windows (desktop)     • windows            • windows-x64    • Microsoft Windows [Version 10.0.18363.900]
        • Web Server (web)      • web-server         • web-javascript • Flutter Tools
        • Chrome (web)          • chrome             • web-javascript • Google Chrome 83.0.4103.116
        • Edge (web)            • edge               • web-javascript • Microsoft Edge 83.0.478.61
    
    • No issues found!
    
    
    bug 
    opened by Abhilash-Chandran 10
  • Multiple widgets used the same GlobalKey.

    Multiple widgets used the same GlobalKey.

    HI!

    I keep getting this error on iOS and Android:

    ════════ Exception caught by widgets library ═══════════════════════════════════
    The following assertion was thrown while finalizing the widget tree:
    Multiple widgets used the same GlobalKey.
    
    The key [GlobalKey#653c9] was used by multiple widgets. The parents of those widgets were:
    - Builder-[<'iPhone 5'>]
    - Builder-[<'Medium phone'>]
    A GlobalKey can only be specified on one widget at a time in the widget tree.
    When the exception was thrown, this was the stack
    #0      GlobalKey._debugVerifyGlobalKeyReservation.<anonymous closure>.<anonymous closure>.<anonymous closure> 
    package:flutter/…/widgets/framework.dart:246
    #1      _LinkedHashMapMixin.forEach  (dart:collection-patch/compact_hash.dart:379:8)
    #2      GlobalKey._debugVerifyGlobalKeyReservation.<anonymous closure>.<anonymous closure> 
    package:flutter/…/widgets/framework.dart:193
    #3      _LinkedHashMapMixin.forEach  (dart:collection-patch/compact_hash.dart:379:8)
    #4      GlobalKey._debugVerifyGlobalKeyReservation.<anonymous closure> 
    package:flutter/…/widgets/framework.dart:189
    ...
    ════════════════════════════════════════════════════════════════════════════════
    

    It didn't happen to me immediately but I think it was triggered by me switching phone types. Here's my flutter doctor.

    [✓] Flutter (Channel beta, v1.17.0-3.3.pre, on Mac OS X 10.15.4 19E287, locale en-US)
     
    [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    [✓] Xcode - develop for iOS and macOS (Xcode 11.4.1)
    [✓] Chrome - develop for the web
    [✓] Android Studio (version 3.6)
    [✓] Connected device (3 available)
    
    bug 
    opened by Nolence 9
  • Does Preview Device work in release mode? (Web)

    Does Preview Device work in release mode? (Web)

    I am trying to deploy an app with preview mode enabled but getting errors and I wanted to rule out if these errors are actually from preview mode being rendered in release mode.

    opened by Dnathan33 8
  • Error: No named parameter with the name 'nullOk'. nullOk: nullOk,

    Error: No named parameter with the name 'nullOk'. nullOk: nullOk,

    I started getting this error after upgrading to the latest flutter version on the master channel and I think it has something to do with this issue here and here which has to do with media_query.

    pub.dartlang.org/device_preview-0.4.8/lib/src/device_preview.dart:135:11: 
    Error: No named parameter with the name 'nullOk'.  nullOk: nullOk,
    /flutter/packages/flutter/lib/src/widgets/media_query.dart:814:25: 
    Context: Found this candidate, but the arguments don't match.
      static MediaQueryData of(BuildContext context) {  
    
    Doctor summary (to see all details, run flutter doctor -v):
    [✓] Flutter (Channel master, 1.24.0-4.0.pre.138, on Mac OS X 10.15.5 19F101 darwin-x64, locale en-NG)
    [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    [✓] Xcode - develop for iOS and macOS (Xcode 11.1)
    [✓] Chrome - develop for the web
    [✓] Android Studio (version 4.1)
    [✓] VS Code (version 1.50.1)
    [✓] Connected device (4 available)
    
    • No issues found!
    
    opened by ebot64 8
  • Flutter 2.0

    Flutter 2.0

    I'm trying to use DevicePreview with the last stable version of flutter (2.0), I tried both version 0.5.5 and 0.6.2 beta). I got version conflict with Provider 5.0.0

    opened by jrcollin 7
  • Dialog widget is out of phone boundaries

    Dialog widget is out of phone boundaries

    Hey guys, I love this plugin! Thank you so much. Here's the issue I found.

    When I want to show dialog, the dialog widget does not respect the virtual phone boundaries. The behavior I want dialog to stay within the phone.

    image

    bug help wanted 
    opened by mirkancal 7
  • dependencies: provider: ^6.0.0

    dependencies: provider: ^6.0.0

    Because device_preview 0.7.4 depends on provider ^5.0.0 and no versions of device_preview match >0.7.4 <0.8.0, device_preview ^0.7.4 requires provider ^5.0.0. So, because app depends on both provider ^6.0.0 and device_preview ^0.7.4, version solving failed. pub get failed (1; So, because app depends on both provider ^6.0.0 and device_preview ^0.7.4, version solving failed.)

    opened by bordunosp 6
  • screenshots capture automation for stores

    screenshots capture automation for stores

    Hi many thanks for the new release I have managed to automate the screenshots capture with the flutter driver So that 's my DataHandler

    final DataHandler handler = (String msg) async {   
        if (msg == "screenshot"){      
          var screenshot = await DevicePreview.screenshot(RM.context);
          logger.info(screenshot.device.name);
          var link = await FileioScreenshotUploader().upload(screenshot);
          logger.info(link);     
        }
        return null;
      };  
      enableFlutterDriverExtension(handler: handler);
    

    And when ever i want to take a screenshot to my test i call

    await driver.runUnsynchronized(() async {
            await driver.requestData("screenshot");
          });
    

    Now my question...what i am missing is also changing the device frame in the runtime like DevicePreview.setDevice(DeviceInfo deviceInfo) Is that possible?

    opened by xalikoutis 6
  • MediaQuery returns actual device size.

    MediaQuery returns actual device size.

    Potentially this is unavoidable but it seems that any widgets that consume MediaQuery.size are rendered incorrectly on Device Preview. It looks like it returns the actual device size as opposed to the virtual device size.

    opened by AlabasterAxe 6
  • part 'devices.g.dart' not found

    part 'devices.g.dart' not found

    I am using version 0.7.2 and facing an error as following:

    ../../flutter/.pub-cache/hosted/pub.dartlang.org/device_frame-0.4.1/lib/src/devices.dart:9:6: Error: Error when reading '../../flutter/.pub-cache/hosted/pub.dartlang.org/device_frame-0.4.1/lib/src/devices.g.dart': The system cannot find the file specified.

    part 'devices.g.dart';

     ^
    

    ../../flutter/.pub-cache/hosted/pub.dartlang.org/device_frame-0.4.1/lib/src/devices.dart:9:6: Error: Can't use '../../flutter/.pub-cache/hosted/pub.dartlang.org/device_frame-0.4.1/lib/src/devices.g.dart' as a part, because it has no 'part of' declaration. part 'devices.g.dart'; ^ ../../flutter/.pub-cache/hosted/pub.dartlang.org/device_frame-0.4.1/lib/src/devices.dart:88:38: Error: Getter not found: '_allDevices'. static List get all => _allDevices; ^^^^^^^^^^^ ../../flutter/.pub-cache/hosted/pub.dartlang.org/device_frame-0.4.1/lib/src/devices.dart:92:5: Error: Getter not found: '_allDevices'. _allDevices.firstWhere( ^^^^^^^^^^^

    FAILURE: Build failed with an exception.

    • Where: Script 'C:\Users\Administrator\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1035

    • What went wrong: Execution failed for task ':app:compileFlutterBuildDebug'.

    Process 'command 'C:\Users\Administrator\flutter\bin\flutter.bat'' finished with non-zero exit value 1

    • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

    • Get more help at https://help.gradle.org

    BUILD FAILED in 47s Exception: Gradle task assembleDebug failed with exit code 1 Exited (sigterm)

    opened by vaibhavcs99 4
  • Bug:  Uncaught ReferenceError: WebAssembly is not defined [demo website]

    Bug: Uncaught ReferenceError: WebAssembly is not defined [demo website]

    While trying to open the website, this pops up in console.

    main.dart.js:33420 
            
        Uncaught ReferenceError: WebAssembly is not defined
        at La (canvaskit.js:151:54)
        at canvaskit.js:143:415
        at ai3.$1 (main.dart.js:22300:25)
        at aeO.adq (main.dart.js:33446:34)
        at aeO.CL (main.dart.js:33448:21)
        at acy.$0 (main.dart.js:33122:11)
        at Object.rj (main.dart.js:13589:40)
        at an.mn (main.dart.js:33055:3)
        at acq.$0 (main.dart.js:33090:13)
        at Object.aEz (main.dart.js:13621:5)
    
    opened by danger-ahead 0
  • DevicePreview.screenshot throws Error: Unexpected null value

    DevicePreview.screenshot throws Error: Unexpected null value

    I'm getting this weird error when calling DevicePreview.screenshot(context). This only happens on one specific page only on the web platform. Other pages work fine and it works on iOS.

    I couldn't find any more info while debugging that might explain this error, I only have the following exception. I assume this is not much help to identify the issue but I still want to see if someone has an idea.

    Error: Unexpected null value.
    ../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 266:49      throw_
    ../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 528:63  nullCheck
    ../lib/_engine/engine/canvaskit/layer.dart 584:34                                    preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 357:9                                     preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 197:38                                    preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 357:9                                     preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 237:38                                    preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 357:9                                     preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 357:9                                     preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 357:9                                     preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 237:38                                    preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 357:9                                     preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 357:9                                     preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 197:38                                    preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 357:9                                     preroll
    ../lib/_engine/engine/canvaskit/layer.dart 125:12                                    prerollChildren
    ../lib/_engine/engine/canvaskit/layer.dart 357:9                                     preroll
    ../packages/bardogs_flutter/my_app.dart 213:22                                       <fn>
    ../packages/flutter/src/material/ink_well.dart 1072:21                               handleTap
    ../packages/flutter/src/gestures/recognizer.dart 253:24                              invokeCallback
    ../packages/flutter/src/gestures/tap.dart 627:11                                     handleTapUp
    ../packages/flutter/src/gestures/tap.dart 306:5                                      [_checkUp]
    ../packages/flutter/src/gestures/tap.dart 239:7                                      handlePrimaryPointer
    ../packages/flutter/src/gestures/recognizer.dart 615:9                               handleEvent
    ../packages/flutter/src/gestures/pointer_router.dart 98:12                           [_dispatch]
    ../packages/flutter/src/gestures/pointer_router.dart 143:9                           <fn>
    ../dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:13          forEach
    ../packages/flutter/src/gestures/pointer_router.dart 141:17                          [_dispatchEventToRoutes]
    ../packages/flutter/src/gestures/pointer_router.dart 127:7                           route
    ../packages/flutter/src/gestures/binding.dart 460:19                                 handleEvent
    ../packages/flutter/src/gestures/binding.dart 440:14                                 dispatchEvent
    ../packages/flutter/src/rendering/binding.dart 337:11                                dispatchEvent
    ../packages/flutter/src/gestures/binding.dart 395:7                                  [_handlePointerEventImmediately]
    ../packages/flutter/src/gestures/binding.dart 357:5                                  handlePointerEvent
    ../packages/flutter/src/gestures/binding.dart 314:7                                  [_flushPointerEventQueue]
    ../packages/flutter/src/gestures/binding.dart 295:7                                  [_handlePointerDataPacket]
    ../lib/_engine/engine/platform_dispatcher.dart 1183:13                               invoke1
    ../lib/_engine/engine/platform_dispatcher.dart 244:5                                 invokeOnPointerDataPacket
    ../lib/_engine/engine/pointer_binding.dart 147:39                                    [_onPointerData]
    ../lib/_engine/engine/pointer_binding.dart 653:20                                    <fn>
    ../lib/_engine/engine/pointer_binding.dart 594:14                                    <fn>
    ../lib/_engine/engine/pointer_binding.dart 288:16                                    loggedHandler
    ../lib/_engine/engine/pointer_binding.dart 179:80                                    <fn>
    ../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 334:14  _checkAndCall
    ../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 339:39  dcall
    
    opened by JonasJW 0
  • Is it possible to start with device preview enabled but turned off

    Is it possible to start with device preview enabled but turned off

    I would like to start with the toggle switch to "off" so screen is "normal" but with the feature still usable. is this possible yet? thanks

    opened by neiljaywarner 2
  • Status Bar in Device Preview

    Status Bar in Device Preview

    I'm using Device Preview to automatically take screenshots, which I later frame and add a title to using frameit. It works well for the most part, but I'm missing a status bar.

    The best solution for me would be if the screenshots could be added by Device Preview. I can probably implement the feature, but I just wanted to open an issue about it to discuss whether it is within the scope of the package and what the best solution would be.

    I'm thinking that the best way to show a status bar would be to use either one image, or one image per icon. It should probably also be possible to toggle the status bar on / off, preferably independent of the device frame.

    Thoughts?

    opened by Hannnes1 1
  • Multiple screenshots error

    Multiple screenshots error

    Taking multiple screenshots for all available devices doesn’t work because DevicePreview.selectedDevice(context) in device_preview_screenshot/lib/src/section.dart gives an error.

    opened by Mitagki 0
A simple detailed flutter widget that looks almost the same as the real instagram mention widget.

Instagram Mention Widgets 'small details do matter' ❤️ This package provides simple and almost the same UI details that the real Instagram mention wid

AbdulMuaz Aqeel 20 Oct 10, 2022
SSH no ports provides ssh to a remote Linux device with out that device having any ports open

Ssh! No ports ssh no ports provides a way to ssh to a remote linux host/device without that device having any open ports (not even 22) on external int

The Atsign Foundation 224 Dec 21, 2022
A responsive scaffold widget that adjusts to your device size, for your flutter mobile and web apps.

scaffold_responsive A responsive scaffold widget that adjusts to your device size, for your flutter mobile and web apps. Check out the Live demo here

Tushar Sadhwani 9 Sep 27, 2022
ToDo App made with flutter which stores your todos based on their categories. The data is stored in external application storage in your device in JSON file.

⭐ My ToDo ⭐ Built with ❤︎ by Akash Debnath This is my second project on Flutter. This app hepls you to keep record of your ToDos. You can create your

Akash Debnath 38 Dec 25, 2022
Hangman and yet another gaming App(i love games and making it XD)

and yet another gaming App(i love games and making it XD) , i completed the ui and almost all the functionality , i will add some storing data using firebase later, anyways please give a try and enjoy it , i will try in the future to use flame engine to make a 3d cool app or even 2d, any feedback will be apperciated since im still halfway to be a proffesional

FarZ 15 Dec 29, 2022
Another way to build Flutter applications for mobile, web and desktop using the powerful of MVC Design Pattern.

Karee Another way to build Flutter applications for mobile, web and desktop using the powerful of MVC Design Pattern. + = About Karee Karee is a frame

@LeCode 44 Sep 29, 2022
Zone is yet another Hacker News client, built with Flutter, Slidy, and Hacker News API.

Zone for Hacker News Zone is yet another Hacker News client, built with Flutter, Slidy, and Hacker News API. Setup Clone this repo to your machine Req

null 11 Feb 27, 2022
Yet another Todo app, now using Flutter (with ScopedModel)

Flutter Todo Yet another Todo app, now using Flutter. Getting Started This Todo app is implemented using Flutter (with Scoped Model for state manageme

Tuan Nguyen 107 Jan 4, 2023
Receive sharing photos, videos, text, URLs, or any other file types from another app.

Receive Sharing Files To Flutter App Through Other Apps Receive sharing photos, videos, text, URLs, or any other file types from another app. Visit :

Jaimil Patel 21 Dec 25, 2022
A Flutter based to do list app (yes, another to do list... but... this time based on a beautiful design)

✔️ Flutter to do App "To Do List" A Flutter app based on the design of the To Do App, created by Rudi Hartono, see more on: Uplabs. Getting Started ??

Johan 561 Dec 31, 2022
Yet another booru viewer for Android

Yet another booru imageboards viewer for Android Download Preview Click Here Building You can build this app just like any other flutter app, for exam

Nauval Rizky 126 Dec 27, 2022
Yet another localization approach in Flutter

Flutter Global Summit Vol.2 schedule Source code of the mobile application that displays the schedule of the Flutter Global Summit Vol.2 conference th

Anna Leushchenko 3 Mar 24, 2022
Another Awesome Online Radio Player

kRadio Player Another Awesome Online Radio Player. Getting Started Follow the guide on how to install Flutter. Clone the repository and open with your

Marcin Kitowicz 39 Nov 23, 2022
Type - Yet another typing test made in Flutter

another typing test Yet another typing test made in Flutter, because why not. Tr

Jeff Sieu 8 Jul 9, 2022
Flashy_tab_bar - One another nice animated tabbar

One another nice animated tabbar (Inspired by Cuberto) Getting Started Add the dependency at pubspec.yaml:

TheBrio 9 Nov 16, 2022
Koduko - Yet another Habit tracker made with flutter.

Koduko Yet another Habit tracker made with flutter. ❓ About It's an open source and free app where you can manage your daily or weekly habits. ?? Gett

Mazahir 75 Dec 27, 2022
Another breakpoint framework. Aims to simplify as much as possible building adaptive layouts.

Another breakpoint framework. Aims to simplify as much as possible building adaptive layouts. Features Really simple implementation Works with and wit

null 3 Sep 26, 2022
Upload Files To Firebase Storage with Flutter. Pick images, videos, or other files from your device and upload them to Firebase.

Flutter Tutorial - Upload Files To Firebase Storage Upload Files To Firebase Storage with Flutter. Pick images, videos, or other files from your devic

Johannes Milke 30 Dec 28, 2022