qr_bill 1.1.0 qr_bill: ^1.1.0 copied to clipboard
A Flutter library for use in the development of Swiss payment QR bills and payment slips.
Swiss QR Bill Library #
The QR Bill library is a Flutter library for use in the development of Swiss payment QR bills and payment slips.
Features #
The library is composed of three classes:
- QRBill. The purpose of this class is as a data class, similar to a POJO, for the storing and transport of QR-bill data. Additionally, this class can validate that the data contained conforms to the Swiss Payment Standards (currently version 2.2).
- QRGenerator. This class allows the generation of the actual QR image used by a QR-bill, without the payment slip. Input is in the form of a QRBill, while output may be a Widget or PNG binary data.
- BillGenerator. This class will produce the full formatted QR-bill payment slip, outputted as PNG binary data for a single QR-bill or a PDF document containing one or more QR-bills (one per page). Input is in the form of a QRBill for single images and a QRBill list for PDF documents. Supported languages are English, German, French and Italian.
Usage #
Typically the QRBill
class must always be imported as it is used as an input with the other two classes - either QRGenerator
(for QR code generation) or BillGenerator
(for payment slip / invoice generation).
A QR-bill Widget can be generated as follows:
import 'package:flutter/material.dart';
import 'package:qr_bill/qr_bill.dart';
import 'package:qr_bill/qr_generator.dart';
Future<Widget> getQRBillWidget(String rawQrCode, double size) async {
QRBill qrBill = QRBill(data: rawQrCode);
Widget? qrWidget;
if (qrBill.isValid()) {
QRGenerator qr = QRGenerator(qrBill);
qrWidget = await qr.getWidget(size: size);
}
if (qrWidget == null) {
return SizedBox(
width: size,
height: size,
child: const Center(child: Text("QR data incorrectly formatted!")),
);
} else {
return qrWidget;
}
}
To output a PDF document containing multiple QR payment slips:
import 'package:qr_bill/qr_bill.dart';
import 'package:qr_bill/bill_generator.dart';
Future<File?> getInvoicesBinary(
List<QRBill> qrBills, File fileToWrite) async {
BillGenerator bills = BillGenerator(language: BillGenerator.german);
Uint8List? bill = await bills.generateInvoices(qrBills);
return bill == null ? null : await fileToWrite.writeAsBytes(bill);
}
Quick API Reference #
QRBill #
QRBill QRBill({String data = ""})
Basic constructor.QRBill QRBill.fromJson(Map<String, dynamic> json)
Deserializes the QRBill object from a JSON format.Map<String, dynamic> toJson()
Serializes the QRBill object to a JSON format.String toString()
Returns the QRBill object as a rawString
used for the QR code.bool isValid()
Returns if the QRBill strictly follows the specification.List<QRBillException> qrExceptions
Returns a list of errors if the QRBill does not strictly follow the specification and an empty list if it does.- Numerous
getters
andsetters
for the various Swiss QR bill attributes are also included.
QRGenerator #
QRGenerator QRGenerator(QRBill data)
Basic constructor.Future<Widget?> getWidget({required double size, double margin = 0.05})
Outputs a single QR code (via the constructor) as a Flutter widget.Future<ByteData?> getBinary({required double size, double margin = 0.05})
Outputs the binary data of a single QR code (via the constructor), in a PNG format.void drawCanvas(Canvas c, {double margin = 0.0, required double size, Offset offset = const Offset(0.0, 0.0)})
Draws a single QR code (via the constructor), to a paint canvas. Principally used byBillGenerator
.
BillGenerator #
BillGenerator BillGenerator({BillGenerator language = BillGenerator.english})
Basic constructor. Also sets the language to be employed.Future<Uint8List?> getBinary(QRBill qrBill)
Outputs the binary data of a single Swiss QR bill payment slip, in a PNG format.Future<Widget?> getWidget(QRBill qrBill)
Generates and returns a Widget version of the Swiss QR bill payment slip for the supplied QRBill object.Future<List<Widget?>> getWidgets(List<QRBill> qrBills)
Generates and returns a list of Widgets for the Swiss QR bill payment slips for inputted QRBill objec list.Future<Uint8List?> generateInvoices(List<QRBill> qrBills)
Outputs the binary data of supplied QRBills as Swiss QR bill payment slips, in a PDF format, one per page.