In today’s mobile-first retail world, the Odoo POS mobile app with SUNMI terminal integration—powered by Flutter—offers a seamless, flexible, and scalable mobile POS solution.
In this blog, we’ll explore integrating SUNMI Android terminals with Odoo POS to utilise their thermal printing and hardware features.
What is a POS App?
A POS (Point of Sale) app helps businesses manage sales, track inventory, process payments, and generate receipts, commonly used in retail and hospitality industries.
It is the digital version of a traditional cash register, often enhanced with features like analytics, inventory management, and customer tracking.
To dive deeper, check out our comprehensive guide on the Odoo POS Flutter App for everything you need to get started.
What is SUNMI Mobile Terminal?
A SUNMI Mobile Terminal is a smart, Android-based handheld device designed to streamline business operations by integrating multiple functionalities into a single, portable unit.
These terminals are widely used in sectors like retail, hospitality, logistics, and healthcare to facilitate tasks such as sales transactions, inventory management, and customer engagement.
Key Features:-
- Operating System: Runs on Android OS, often customised with SUNMI’s proprietary interface for enhanced business applications.
- Integrated Thermal Printer: Built-in high-speed thermal printers (e.g., 58mm or 80mm) allow for immediate receipt and label printing.
- Barcode Scanning: Equipped with 1D/2D barcode scanners for efficient product identification and inventory tracking.
- NFC and RFID Support: Facilitates contactless payments and access control through Near Field Communication (NFC) and Radio-Frequency Identification (RFID) technologies.
- Connectivity Options: Supports 4G/3G/2G networks, Wi-Fi, Bluetooth, and GPS to ensure seamless communication and location tracking.
Connecting SUNMI Terminal with the Odoo POS Flutter App
By connecting SUNMI printer with your POS App, you can send print commands for text, images, and structured rows.
Follow the step-by-step guide below to set up and use the printer efficiently:
Step 1:- Add the below Flutter package to your project
Add the Sunmi Printer Plus package to your project.
1 2 |
dependencies: sunmi_printer_plus: ^4.1.0 |
Then run:
1 |
flutter pub get |
This package provides access to SUNMI’s built-in printer API for Flutter apps.
Step 2:- Import the Package in your code
At the top of your Dart file where you want to access the printer, add:
1 |
import 'package:sunmi_printer_plus/sunmi_printer_plus.dart'; |
Step 3: Print Text and Images with Sunmi Terminal
After initialising the SUNMI printer, you can send commands for styled text, images, and structured rows:
1. Printing Plain and Styled Text
You can follow the steps below to see the practical execution of the print commands of Sunmi’s built-in thermal printer:
1 2 3 4 5 6 |
await sunmiPrinterPlus.printCustomText( sunmiText: SunmiText( text: "Let Print Hello World" ) ); |
2. Print Assets and Network Images
To print images on the Sunmi Terminal printer, convert the asset and network images to Uint8List before passing them to the print command.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
await sunmiPrinterPlus.printImage(await getAssetImageAsUint8List("lib/assets/logo.jpeg"), align: SunmiPrintAlign.CENTER); // For Assets Images await sunmiPrinterPlus.printImage(await getNetworkImageAsUint8List("https://...../logo.png"), align: SunmiPrintAlign.CENTER); // For network Images Future<Uint8List> getAssetImageAsUint8List(String assetPath) async { ByteData byteData = await rootBundle.load(assetPath); return byteData.buffer.asUint8List(); } } Future<Uint8List> getNetworkImageAsUint8List(String imagePath) async { ByteData byteData = await NetworkAssetBundle(Uri.parse(imagePath)).load(""); return byteData.buffer.asUint8List(); } |
How Sunmi Print Commands Work
The sunmi_printer_plus
Sends print commands sequentially, meaning each function is executed in the order it’s called. This is crucial for formatting and flow.
1 2 3 |
await sunmiPrinterPlus.addText(...); await sunmiPrinterPlus.printImage(...); await sunmiPrinterPlus.printRow(...); |
Important Note: Always use await
to ensure each command completes before the next one begins. This guarantees proper alignment and avoids overlapping or out-of-order prints.
Check out the complete video guide on integrating the Odoo POS Mobile App with the SUNMI Mobile Terminal.
Conclusion
In this blog, we explored how to integrate the Odoo POS Flutter App with a SUNMI mobile terminal to leverage its built-in thermal printer.
By using the sunmi_printer_plus Flutter package, we demonstrated how to print text, images, and formatted invoice details directly from the app, all without relying on external hardware.
By combining Odoo’s powerful backend with SUNMI’s hardware and Flutter’s flexibility, you get a robust, professional-grade POS system — all from a single device.
Hungry for more tech insights? Explore a world of powerful integrations, smart development tips, and Flutter tricks on the Mobikul Blog – where innovation meets implementation!