real_qr_code 0.0.3 copy "real_qr_code: ^0.0.3" to clipboard
real_qr_code: ^0.0.3 copied to clipboard

A Flutter QR code generator with stylized rounded finder patterns, blob-effect data modules, and a center space for logo overlay.

real_qr_code #

A stylized QR code generator with rounded finder patterns, blob-effect data modules, and a center space for logo overlay.

Available for Flutter (pub.flutter-io.cn) and Web (npm).

Real QR Code example

Flutter #

Installation #

dependencies:
  real_qr_code: ^0.0.2

Usage #

import 'package:real_qr_code/real_qr_code.dart';

RealQrCode(
  data: 'https://example.com',
  size: 300,
  logo: Icon(Icons.flutter_dash, size: 48),
)

With custom styling #

RealQrCode(
  data: 'https://example.com',
  size: 300,
  centerSpaceSize: 80,
  color: Color(0xFF0E121B),
  backgroundColor: Color(0xFFF7F8F9),
  borderRadius: 16,
  finderPatternRadiusFraction: 1.2,
  dataModuleRadiusFraction: 0.45,
  logo: Image.asset('assets/logo.png', width: 48, height: 48),
)

Parameters #

Parameter Type Default Description
data String required QR code content
size double? parent size QR code size in pixels
centerSpaceSize double 80 Center clear zone size
color Color #0E121B Module color
backgroundColor Color #F7F8F9 Background color
logo Widget? null Widget centered over QR
borderRadius double 16 Outer corner radius
finderPatternRadiusFraction double 1.2 Finder pattern roundness
dataModuleRadiusFraction double 0.45 Data module roundness

If size is not specified, the widget adapts to parent constraints via LayoutBuilder.

The logo widget is rendered via Stack + Center, so any widget works — Icon, Image, SvgPicture, etc. Logo color automatically inherits the QR color through IconTheme.


Web (npm) #

An SVG-based QR code generator for any web framework — React, Vue, Nuxt, Svelte, or vanilla JS.

Installation #

npm install real-qr-code

Usage #

import { renderQrCode } from 'real-qr-code';

renderQrCode(document.getElementById('qr'), {
  data: 'https://example.com',
  size: 300,
});

Get SVG string #

import { generateQrCodeSvg } from 'real-qr-code';

const svg = generateQrCodeSvg({
  data: 'https://example.com',
  size: 300,
  color: '#0E121B',
  backgroundColor: '#F7F8F9',
});

Options #

Option Type Default Description
data string required QR code content
size number 256 Size in pixels
centerSpaceSize number 80 Center clear zone
color string '#0E121B' Module color
backgroundColor string '#F7F8F9' Background color
borderRadius number 16 Outer corner radius
finderPatternRadiusFraction number 1.2 Finder pattern roundness
dataModuleRadiusFraction number 0.45 Data module roundness

Framework examples #

React

import { useRef, useEffect } from 'react';
import { renderQrCode } from 'real-qr-code';

function QrCode({ data }: { data: string }) {
  const ref = useRef<HTMLDivElement>(null);

  useEffect(() => {
    if (ref.current) {
      renderQrCode(ref.current, { data, size: 300 });
    }
  }, [data]);

  return <div ref={ref} />;
}

Vue

<template>
  <div ref="qrRef" />
</template>

<script setup lang="ts">
import { ref, onMounted } from 'vue';
import { renderQrCode } from 'real-qr-code';

const qrRef = ref<HTMLDivElement>();

onMounted(() => {
  if (qrRef.value) {
    renderQrCode(qrRef.value, { data: 'https://example.com', size: 300 });
  }
});
</script>

Vanilla JS

<div id="qr"></div>
<script type="module">
  import { renderQrCode } from 'real-qr-code';
  renderQrCode(document.getElementById('qr'), {
    data: 'https://example.com',
    size: 300,
  });
</script>

Features #

  • Rounded finder patterns — three corner markers with smooth rounded rectangles
  • Blob effect — adjacent data modules merge into organic shapes
  • Rounded alignment patterns — small 5x5 markers styled consistently
  • Center logo space — 80dp clear zone for logo overlay
  • Error correction H (30%) — reliable scanning even with center obstruction
  • Responsive sizing — adapts to parent/container when size is not set

How it works #

The QR matrix is generated using qr (Flutter) / qrcode-generator (Web). Each module is then rendered with per-corner radius based on neighbor detection:

if neighbor exists → radius = 0 (modules merge)
if no neighbor    → radius = dataModuleRadius (rounded corner)

This creates the distinctive blob effect where clusters of dark modules flow together organically.

License #

MIT

0
likes
140
points
32
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter QR code generator with stylized rounded finder patterns, blob-effect data modules, and a center space for logo overlay.

Repository (GitHub)
View/report issues

Topics

#qr-code #qr #widget

License

MIT (license)

Dependencies

flutter, qr

More

Packages that depend on real_qr_code