Eseguire una stampa con Flutter

Mattepuffo's logo
Eseguire una stampa con Flutter

Eseguire una stampa con Flutter

Per Flutter abbiamo il package printing che ci permette di eseguire una stampa attraverso le stampanti compatibili con il dispositivo che si sta usando.

Io l'ho testata su Android e Windows 10.

Per usarlo possiamo aggiungere questa dipendenza al file pubspec.yaml:

dependencies:
  printing: ^5.10.1

Questa versione richiede Flutter 3.7.0, quindi assicuratevi di aver aggiornato il flutter-sdk.

Detto ciò qui sotto un esempio per cominciare:

import 'package:flutter/material.dart';
import 'package:pdf/pdf.dart';
import 'package:pdf/widgets.dart' as pw;
import 'package:printing/printing.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Test',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Test'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Stack(
        children: <Widget>[
          ElevatedButton(
            onPressed: () async {
              final doc = pw.Document();

              doc.addPage(
                pw.Page(
                  pageFormat: PdfPageFormat.a4,
                  build: (pw.Context context) {
                    return pw.Center(
                      child: pw.Text('CIAO!!'),
                    );
                  },
                ),
              ); // Page

              await Printing.layoutPdf(
                  onLayout: (PdfPageFormat format) async => doc.save());
            },
            child: const Text('PRESS'),
          ),
        ],
      ),
    );
  }
}

Come potete vedere dalla documentazione, volendo possiamo anche stampare immagini, o salvare i PDF.

Enjoy!


Condividi

Commentami!