Dollar StarXpand
Seamlessly Integrate Star Micronics Hardware with Dollar POS
Overview
Dollar StarXpand is a Flutter plugin designed to integrate Star Micronics printers and cash drawers into the Dollar POS system. This plugin provides platform-specific implementations for iOS and Android, enabling smooth communication with Star Micronics devices for printing receipts, opening cash drawers, and more.
Features
- Discover and connect to Star Micronics printers.
- Print receipts with customizable templates.
- Open cash drawers programmatically.
- Stream printer discovery events.
Installation
Add the plugin to your Flutter project by including it in your pubspec.yaml
:
dependencies:
dollar_starxpand: latest
Run flutter pub get
to fetch the package.
iOS Setup
To use the plugin on iOS, update your Info.plist
file to include the required permissions:
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Use Bluetooth for communication with the printer.</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Use Bluetooth for communication with the printer.</string>
<key>NSLocalNetworkUsageDescription</key>
<string>Use Local Network for communication with the printer or discovery the printers.</string>
<key>UISupportedExternalAccessoryProtocols</key>
<array>
<string>jp.star-m.starpro</string>
</array>
Android Setup
Ensure the following permissions are added to your AndroidManifest.xml
file for Bluetooth:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
Example Usage
Import the Plugin
import 'package:dollar_starxpand/dollar_starxpand.dart';
Discover Printers
final plugin = DollarStarxpand();
await plugin.startDiscovery();
plugin.onPrinterDiscovered((identifier, interfaceType, model) {
print("Printer found: $model ($interfaceType)");
});
Connect to a Printer
await plugin.connectPrinter(identifier: "printer_identifier", interface: "bluetooth");
Print a Receipt
await plugin.printReceipt(
identifier: "printer_identifier",
interface: "bluetooth",
printData: {
"id": "12345",
"date": "DEC 17, 2024 12:31 AM",
"store": {"name": "Store Name", "address": "123 Main St", "phone": "123-456-7890"},
// Additional receipt data here
},
);
Open Cash Drawer
await plugin.openCashDrawer(identifier: "printer_identifier", interface: "bluetooth");
Method Channels
The plugin uses the following method channels for platform communication:
-
Method Channel:
dollar_starxpand
Handles printer connection, printing, and drawer operations. -
Event Channel:
printerDiscovered
Streams discovered printer details to Flutter.
Troubleshooting
Common Issues
- Printer Not Found: Ensure the printer is powered on and discoverable.
- Connection Failed: Verify the
identifier
andinterface
match the discovered printer details.
Contributors
We'd like to thank the following contributors for their support in developing this plugin:
License
This plugin is licensed under the MIT License.