qr_flutter 3.2.0  qr_flutter: ^3.2.0 copied to clipboard
qr_flutter: ^3.2.0 copied to clipboard
QR.Flutter is a Flutter library for simple and fast QR code rendering via a Widget or custom painter.
 
QR.Flutter is a Flutter library for simple and fast QR code rendering via a Widget or custom painter.
Features #
- Built on QR - Dart
- Automatic QR code version/type detection or manual entry
- Supports QR code versions 1 - 40
- Error correction / redundancy
- Configurable output size, padding, background and foreground colors
- Supports image overlays
- Export to image data to save to file or use in memory
- No internet connection required
Installing #
You should add the following to your pubspec.yaml file:
dependencies:
  qr_flutter: ^3.1.0
Note: If you're using the Flutter master channel, if you encounter build issues, or want to try the latest and greatest then you should use the master branch and not a specific release version. To do so, use the following configuration in your pubspec.yaml:
dependencies:
  qr_flutter:
    git:
      url: git://github.com/lukef/qr.flutter.git
Keep in mind the master branch could be unstable.
After adding the dependency to your pubspec.yaml you can run: flutter packages get or update your packages using
your IDE.
Getting started #
To start, import the dependency in your code:
import 'package:qr_flutter/qr_flutter.dart';
Next, to render a basic QR code you can use the following code (or something like it):
QrImage(
  data: "1234567890",
  version: QrVersions.auto,
  size: 200.0,
),
Depending on your data requirements you may want to tweak the QR code output. The following options are available:
| Property | Type | Description | 
|---|---|---|
| version | int | QrVersions.autoor a value between 1 and 40. See http://www.qrcode.com/en/about/version.html for limitations and details. | 
| errorCorrectionLevel | int | A value defined on QrErrorCorrectLevel. e.g.:QrErrorCorrectLevel.L. | 
| size | double | The (square) size of the image. If not given, will auto size using shortest size constraint. | 
| padding | EdgeInsets | Padding surrounding the QR code data. | 
| backgroundColor | Color | The background color (default is none). | 
| foregroundColor | Color | The foreground color (default is black). | 
| gapless | bool | Adds an extra pixel in size to prevent gaps (default is true). | 
| errorStateBuilder | QrErrorBuilder | Allows you to show an error state Widgetin the event there is an error rendering the QR code (e.g.: version is too low, input is too long, etc). | 
| constrainErrorBounds | bool | If true, the error Widgetwill be constrained to the square that the QR code was going to be drawn in. If false, the error stateWidgetwill grow/shrink to whatever size it needs. | 
| embeddedImage | ImageProvider | An ImageProviderthat defines an image to be overlaid in the center of the QR code. | 
| embeddedImageStyle | QrEmbeddedImageStyle | Properties to style the embedded image. | 
| embeddedImageEmitsError | bool | If true, any failure to load the embedded image will trigger the errorStateBuilderor render an emptyContainer. If false, the QR code will be rendered and the embedded image will be ignored. | 
Examples #
There is a simple, working, example Flutter app in the /example directory. You can use it to play with all
the options.
Also, the following examples give you a quick overview on how to use the library.
A basic QR code will look something like:
QrImage(
  data: 'This is a simple QR code',
  version: QrVersions.auto,
  size: 320,
  gapless: false,
)
A QR code with an image (from your application's assets) will look like:
QrImage(
  data: 'This QR code has an embedded image as well',
  version: QrVersions.auto,
  size: 320,
  gapless: false,
  embeddedImage: AssetImage('assets/images/my_embedded_image.png'),
  embeddedImageStyle: QrEmbeddedImageStyle(
    size: Size(80, 80),
  ),
)
To show an error state in the event that the QR code can't be validated:
QrImage(
  data: 'This QR code will show the error state instead',
  version: 1,
  size: 320,
  gapless: false,
  errorStateBuilder: (cxt, err) {
    return Container(
      child: Center(
        child: Text(
          "Uh oh! Something went wrong...",
          textAlign: TextAlign.center,
        ),
      ),
    );
  },
)
FAQ #
Has it been tested in production? Can I use it in production? #
Yep! It's stable and ready to rock. It's currently in use in quite a few production applications including:
Outro #
Credits #
Thanks to Kevin Moore for his awesome QR - Dart library. It's the core of this library.
For author/contributor information, see the AUTHORS file.
License #
QR.Flutter is released under a modified MIT license. See LICENSE for details.