Flutter iMin Device

A Flutter plugin for retrieving device information from iMin POS devices.

This plugin provides a simple API to access basic device information such as:

  • Serial Number
  • Device Brand
  • Device Model

Features

  • Get device serial number
  • Get device brand
  • Get device model
  • Simple asynchronous API
  • Uses Flutter MethodChannel for native platform communication
  • Designed for iMin POS devices

Installation

Add flutter_imin_device to your pubspec.yaml:

dependencies:
  flutter_imin_device: ^1.0.0

Then run:

flutter pub get

Replace 1.0.0 with the latest available version.

Usage

Import the package:

import 'package:flutter_imin_device/flutter_imin_device.dart';

Get Serial Number

final serialNumber = await FlutterIminDevice.serialNumber;

print('Serial Number: $serialNumber');

Get Device Brand

final brand = await FlutterIminDevice.deviceBrand;

print('Device Brand: $brand');

Get Device Model

final model = await FlutterIminDevice.deviceModel;

print('Device Model: $model');

Get All Device Information

You can retrieve all available information as follows:

final serialNumber = await FlutterIminDevice.serialNumber;
final brand = await FlutterIminDevice.deviceBrand;
final model = await FlutterIminDevice.deviceModel;

print('Serial Number: $serialNumber');
print('Brand: $brand');
print('Model: $model');

API Reference

FlutterIminDevice.serialNumber

Returns the serial number of the iMin device.

static Future<String?> get serialNumber

Returns:

  • String — Device serial number
  • null — If the serial number cannot be retrieved

Example:

final serialNumber = await FlutterIminDevice.serialNumber;

FlutterIminDevice.deviceBrand

Returns the brand of the device.

static Future<String?> get deviceBrand

Returns:

  • String — Device brand
  • null — If the brand cannot be retrieved

Example:

final brand = await FlutterIminDevice.deviceBrand;

FlutterIminDevice.deviceModel

Returns the model of the device.

static Future<String?> get deviceModel

Returns:

  • String — Device model
  • null — If the model cannot be retrieved

Example:

final model = await FlutterIminDevice.deviceModel;

Example

A simple example:

import 'package:flutter/material.dart';
import 'package:flutter_imin_device/flutter_imin_device.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter iMin Device',
      home: const DeviceInfoPage(),
    );
  }
}

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

  @override
  State<DeviceInfoPage> createState() => _DeviceInfoPageState();
}

class _DeviceInfoPageState extends State<DeviceInfoPage> {
  String? serialNumber;
  String? brand;
  String? model;

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

  Future<void> _loadDeviceInfo() async {
    final results = await Future.wait([
      FlutterIminDevice.serialNumber,
      FlutterIminDevice.deviceBrand,
      FlutterIminDevice.deviceModel,
    ]);

    if (!mounted) return;

    setState(() {
      serialNumber = results[0];
      brand = results[1];
      model = results[2];
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('iMin Device Info'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text('Serial Number: ${serialNumber ?? '-'}'),
            Text('Brand: ${brand ?? '-'}'),
            Text('Model: ${model ?? '-'}'),
          ],
        ),
      ),
    );
  }
}

Platform Support

This plugin is intended for use with iMin POS devices.

Platform Support
Android ✅ Supported
iOS ❌ Not applicable
Web ❌ Not applicable
Windows ❌ Not applicable
macOS ❌ Not applicable
Linux ❌ Not applicable

The actual platform support depends on the native implementation and iMin device APIs available on the target device.

Error Handling

The plugin catches PlatformException when communication with the native platform fails.

If an error occurs, the API returns null.

For example:

final serialNumber = await FlutterIminDevice.serialNumber;

if (serialNumber == null) {
  print('Unable to retrieve serial number');
  return;
}

print('Serial Number: $serialNumber');

Requirements

  • Flutter
  • Dart
  • Android
  • Compatible iMin POS device

Make sure the target iMin device provides access to the required native device information APIs.

Architecture

The plugin communicates between Dart and the native Android implementation using Flutter's MethodChannel.

Flutter Application
       │
       ▼
FlutterIminDevice
       │
       │ MethodChannel
       ▼
Native Android
       │
       ▼
iMin Device API
       │
       ▼
Device Information

The channel used by the plugin is:

flutter_imin_device

Available methods:

getSerialNumber
getDeviceBrand
getDeviceModel

Contributing

Contributions, issues, and feature requests are welcome.

If you encounter a problem with a specific iMin device model, please include:

  • iMin device model
  • Android version
  • Flutter version
  • Plugin version
  • Error message or logs

License

This project is licensed under the MIT License.

See the LICENSE file for details.

Disclaimer

This is an independent Flutter plugin for integrating Flutter applications with iMin POS devices.

It is not affiliated with, endorsed by, or officially maintained by iMin Technology or iMin Singapore.