QR Flutter Plus ✨

QR Flutter Plus

GitHub jinosh.site Donate pub.dev 1.0.1

QR Flutter Plus — https://github.com/jinosh05/qr_flutter_plus — is a modern, maintained Flutter package for fast, offline QR code rendering via Widget or CustomPainter.
Built on qr (Dart) with styled eyes, data modules, gradients, and embedded images — no internet required.

Inspiration: This project is inspired by and built upon the excellent work of theyakka/qr.flutter — now continued at jinosh05/qr_flutter_plus. Huge thanks to the original authors for paving the way.

Support my work: If this package saves you time, consider supporting — https://razorpay.me/@devasundarjinosh • Creator: https://jinosh.site/


Features

  • ✅ Null safety • Flutter 3.7+ • qr: ^4.0.0
  • 🔍 Auto version detection (QrVersions.auto) or manual 1–40
  • 🛡️ Error correction: QrErrorCorrectLevel.low/medium/quartile/high
  • 🎨 Styled eyes (QrEyeStyle) & data modules (QrDataModuleStyle) — square/circle, border radius, rounded outside corners
  • 🌈 Gradient rendering (LinearGradient, RadialGradient)
  • 🖼️ Embedded image overlay with safe area & shape (EmbeddedImageShape.square/circle)
  • 📐 Configurable size, padding, gapless mode
  • 🖼️ Export to ui.Image / ByteData for saving to file
  • ♿ Semantics label, error builder (errorStateBuilder)

Installing

Add to your pubspec.yaml:

dependencies:
  qr_flutter_plus: ^1.0.1

Then run:

flutter pub get

Migrating from qr_flutter? Just replace qr_flutter with qr_flutter_plus and update the import:

import 'package:qr_flutter_plus/qr_flutter_plus.dart';

For legacy compatibility, package:qr_flutter_plus/qr_flutter.dart still works (deprecated shim).


Getting Started

import 'package:qr_flutter_plus/qr_flutter_plus.dart';

QrImageView(
  data: 'https://jinosh.site/',
  version: QrVersions.auto,
  size: 200,
  eyeStyle: const QrEyeStyle(
    eyeShape: QrEyeShape.square,
    color: Color(0xff128760),
    borderRadius: 10,
  ),
  dataModuleStyle: const QrDataModuleStyle(
    dataModuleShape: QrDataModuleShape.square,
    borderRadius: 5,
  ),
)

Properties

Property Type Description
data String Content to encode
version int QrVersions.auto or 1–40
errorCorrectionLevel QrErrorCorrectLevel low/medium/quartile/high
size double Square size; auto if null
padding EdgeInsets Outer padding
backgroundColor Color Background
eyeStyle QrEyeStyle Corner eyes shape/color/radius
dataModuleStyle QrDataModuleStyle Dots shape/color/radius, roundedOutsideCorners
gapless bool No gaps between modules (default true)
gradient Gradient Replace solid color with gradient
embeddedImage ImageProvider Center overlay
embeddedImageStyle QrEmbeddedImageStyle size, safeArea, shape, borderRadius
errorStateBuilder QrErrorBuilder Custom error widget
semanticsLabel String Accessibility

Examples

Basic:

QrImageView(
  data: 'https://jinosh.site/',
  version: QrVersions.auto,
  size: 280,
  gapless: false,
)

With embedded logo:

QrImageView(
  data: 'https://jinosh.site/',
  version: QrVersions.auto,
  size: 280,
  embeddedImage: AssetImage('assets/jinosh_logo.png'),
  embeddedImageStyle: QrEmbeddedImageStyle(
    size: Size.square(40),
    safeArea: true,
    embeddedImageShape: EmbeddedImageShape.square,
    borderRadius: 10,
    shapeColor: Color(0xff128760),
  ),
)

Gradient:

QrImageView(
  data: 'https://razorpay.me/@devasundarjinosh',
  version: QrVersions.auto,
  size: 280,
  gradient: LinearGradient(
    colors: [Color(0xff8B5CF6), Color(0xffF59E0B)],
  ),
)

Error builder:

QrImageView(
  data: 'too long for version 1...',
  version: 1,
  errorStateBuilder: (cxt, err) => Text('Uh oh! $err'),
)

Use painter for export:

final painter = QrPainter(
  data: 'https://jinosh.site/',
  version: QrVersions.auto,
  gapless: true,
);
final pic = painter.toPicture(600);
final image = await painter.toImage(600);
final bytes = await painter.toImageData(600);

See /example for a full Liquid Glass showcase app with both Website QR (https://jinosh.site/) and Donate QR (https://razorpay.me/@devasundarjinosh).


Credits & Attribution

Core QR logic by Kevin Moore — qr.dart.
Original Flutter bindings by the Yakka — qr.flutter — the inspirational source for this fork.
QR Flutter Plus — https://github.com/jinosh05/qr_flutter_plus — is maintained by Devasundar Jinosh — https://jinosh.site/ — donations: https://razorpay.me/@devasundarjinosh

See AUTHORS for contributors.

License

BSD 3-Clause — see LICENSE.

Support

Love the package? Star the repo, share https://jinosh.site/, and donate via Razorpay — it keeps maintenance alive ❤️

https://razorpay.me/@devasundarjinosh

Libraries

qr_flutter_plus
QR Flutter Plus — https://github.com/jinosh05/qr_flutter_plus — fast QR rendering for Flutter.