qr_flutter_plus 1.0.1 copy "qr_flutter_plus: ^1.0.1" to clipboard
qr_flutter_plus: ^1.0.1 copied to clipboard

QR Flutter Plus — a modern, maintained fork for fast QR code rendering via Widget or CustomPainter. Built on qr.dart with gradient, styled eyes/modules, and embedded image support. No internet required.

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

1
likes
150
points
193
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

QR Flutter Plus — a modern, maintained fork for fast QR code rendering via Widget or CustomPainter. Built on qr.dart with gradient, styled eyes/modules, and embedded image support. No internet required.

Repository (GitHub)
View/report issues

Funding

Consider supporting this project:

razorpay.me

License

BSD-3-Clause (license)

Dependencies

flutter, qr

More

Packages that depend on qr_flutter_plus