phomemo 0.0.1 copy "phomemo: ^0.0.1" to clipboard
phomemo: ^0.0.1 copied to clipboard

A Flutter plugin to create information to send to phomemo printers.

example/lib/main.dart

import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'bluetooth.dart';
import 'package:phomemo/phomemo.dart';
import 'package:image/image.dart' as img;

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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

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

class _MyHomePageState extends State<MyHomePage> {
  late Bluetooth bluetooth;
  BluetoothOptions? bleOptions;

  bool printing = false;
  String search = '';
  TextEditingController textController = TextEditingController();

  @override
  void initState() {
    bluetooth = Bluetooth(
      onUpdate: _bleUpdate,
      names: ['P12Pro','D35','D30']
    );
    super.initState();
  }
  @override
  void dispose() {
    bluetooth.destroy();
    super.dispose();
  }
  void _bleUpdate(BluetoothOptions options) {
    //setState(() {
      bleOptions = options;
    //});
    switch (options) {
      case BluetoothOptions.DISCONNECTED:
          setState(() {

          });
        break;
      case BluetoothOptions.CONNECTED:
        setState(() {

        });
        break;
      case BluetoothOptions.DATA_RECEIVED:
        setState(() {

        });
        break;
      default:
        setState((){

        });
        break;
    }
  }
  Future<void> printPhomemo({Uint8List? image,String? name, Size? size})async{// = const Size(double.infinity,12)
    size ??= const Size(double.infinity,12);
    if(printing) return;
    printing = true;
    Phomemo label = Phomemo(send: bluetooth.write, read: bluetooth.read);
    PhomemoHelper helper = PhomemoHelper();
    PhomemoPrinter printer = helper.getPrinterFromName(bluetooth.device!.name);
    
    if(printer == PhomemoPrinter.d35 && size.width == double.infinity){
      size = Size(25,size.height);
    }

    img.Image? letter = name != null?await helper.generateImage(
      TextSpan(
        text: name,//labelController.text, 
        style: const TextStyle(
          fontFamily: 'MuseoSans',
          fontSize: 34,
          color: Colors.black
        ),
      ),
      size: size*8,
    ):null;
    img.Image? qr = image != null?img.decodePng(image):null;
    await label.printLabel(
      [qr,letter],// 
      printer: printer,
      spacing: 5,
    ).then((value){
      printing = false;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'Type below the text you wish to print.',
            ),
            Container(
              margin: const EdgeInsets.fromLTRB(10, 0, 10, 0),
              width: 320,
              height: 35,
              alignment: Alignment.center,
              child: TextField(
                keyboardType: TextInputType.multiline,
                maxLines: 1,
                autofocus: false,
                controller: textController,
                decoration: const InputDecoration(
                  isDense: true,
                  filled: true,
                  contentPadding: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0.0),
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.all(
                      Radius.circular(10),
                    ),
                    borderSide: BorderSide(
                        width: 0, 
                        style: BorderStyle.none,
                    ),
                  ),
                  hintText: 'Text'
                ),
              )
            )
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: (){printPhomemo(name: textController.text);},
        tooltip: 'Print',
        child: const Icon(Icons.print),
      ),
    );
  }
}
0
likes
130
pub points
64%
popularity

Publisher

unverified uploader

A Flutter plugin to create information to send to phomemo printers.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter, image

More

Packages that depend on phomemo