flutter_bt_printer 0.0.4 copy "flutter_bt_printer: ^0.0.4" to clipboard
flutter_bt_printer: ^0.0.4 copied to clipboard

Bluetooth Printer Plugin.

example/lib/main.dart

import 'dart:ffi';

import 'package:btprinter/btprinter_platform_interface.dart';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:btprinter/btprinter.dart';
import 'package:flutter_blue/flutter_blue.dart';
import 'package:flutter/material.dart';

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // static const platform = MethodChannel('example.com/android');
  final _btprinterPlugin = Btprinter();

  List<String?> _devices = [];
  final GlobalKey<ScaffoldState> _scaffoldKey =
      GlobalKey<ScaffoldState>(); // Scaffold의 key

  @override
  void initState() {
    super.initState();

    initBle();
  }

  void initBle() async {
    // Request BLE permissions from MainActivity
    await _getBle();
  }

  Future<void> _getBle() async {
    String? value;
    try {
      // value = await platform.invokeMethod('getBle');
      value = await _btprinterPlugin.getBtPermission();
    } on PlatformException catch (e) {
      value = 'native code error: ${e.message}';
    }
    print(value);
    _showSnackBar(value!, value == "success" ? true : false);
  }

  Future<void> _print(String? device) async {
    List<String> deviceInfo = device!.split('(');
    String logicalName = deviceInfo[0].split("_")[0].trim();
    String address = deviceInfo[1].replaceAll(')', '').trim();

    String? value;
    try {
      value = await _btprinterPlugin.printText(
          "민지해린혜인하니다니 /(> x <)\\n\n", logicalName, address);
    } on PlatformException catch (e) {
      value = "기기연결을 확인하세요: ${e.message}";
    }
    print(value);
    _showSnackBar(value!, value == "success" ? true : false);
  }

  void _getPairedDevices() async {
    String value;
    try {
      // List<Object?> devices = await platform.invokeMethod("getPairedDevices");
      List<Object?> devices = await _btprinterPlugin.getPairedDevices();
      setState(() {
        // _devices = List<String>.from(devices);
        _devices = devices
            .cast<String>()
            .where((device) => device.startsWith('SPP')) //SPP로 시작하는 장치만 가져옴
            .toList();
      });
    } on PlatformException catch (e) {
      value = "플러그인 호출 실패: ${e.message}";
      print(value);
      _showSnackBar(value, false);
    }
  }

  void _showSnackBar(String message, bool isSuccess) {
    final snackBar = SnackBar(
      content: Text(message),
      duration: const Duration(seconds: 5),
      behavior: SnackBarBehavior.floating,
      shape: const StadiumBorder(),
      backgroundColor: Colors.blue,
    );

    final errSnackBar = SnackBar(
      content: Text(message),
      duration: const Duration(seconds: 5),
      behavior: SnackBarBehavior.floating,
      shape: const StadiumBorder(),
      backgroundColor: Colors.red,
    );

    if (isSuccess) {
      ScaffoldMessenger.of(_scaffoldKey.currentContext!).showSnackBar(snackBar);
    } else {
      ScaffoldMessenger.of(_scaffoldKey.currentContext!)
          .showSnackBar(errSnackBar);
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        key: _scaffoldKey, //Scaffold에 key 할당
        appBar: AppBar(
          title: const Text('Bluetooth Device List'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                  onPressed: _getPairedDevices,
                  child: const Text('블루투스 기기 목록 조회')),
              Container(
                height: 200,
                child: _devices == null || _devices.isEmpty
                    ? const Center(
                        child: Text('연결된 기기를 찾을 수 없습니다.'),
                      )
                    : ListView.builder(
                        itemCount: _devices.length,
                        itemBuilder: (context, index) {
                          String? deviceName =
                              _devices[index]?.split('(')[0].trim();
                          return ListTile(
                            title: Text(deviceName ?? ''),
                            onTap: () => _print(_devices[index]),
                          );
                        },
                      ),
              )
            ],
          ),
        ),
      ),
    );
  }
}
1
likes
135
points
21
downloads

Publisher

unverified uploader

Weekly Downloads

Bluetooth Printer Plugin.

Documentation

API reference

License

BSL-1.0 (license)

Dependencies

flutter, flutter_blue, plugin_platform_interface

More

Packages that depend on flutter_bt_printer

Packages that implement flutter_bt_printer