```dart
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:quick_usb/quick_usb.dart';
void main() {
runApp(const MyHome());
}
class MyHome extends StatelessWidget {
const MyHome({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: const MyApp(),
),
);
}
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return _buildColumn();
}
Widget _buildColumn() {
return Column(
children: [
_initExit(),
_getDeviceList(),
_getDevicesWithDescription(),
_getDeviceDescription(),
_hasRequest(),
_openClose(),
_getSetConfiguration(),
_claimReleaseInterface(),
_bulkTransfer(),
],
);
}
Widget _initExit() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
child: const Text('init'),
onPressed: () async {
var init = await QuickUsb.init();
print('init $init');
},
),
ElevatedButton(
child: const Text('exit'),
onPressed: () async {
await QuickUsb.exit();
print('exit');
},
),
],
);
}
List<UsbDevice>? _deviceList;
UsbDevice? _correctDevice;
static const int _devicePID = 0xea60;
static const int _deviceVID = 0x10c4;
Widget _getDeviceList() {
return ElevatedButton(
child: const Text('getDeviceList'),
onPressed: () async {
_deviceList = await QuickUsb.getDeviceList();
print('deviceList: ');
if (_deviceList != null) {
for (var i in _deviceList!) {
print(i);
if (i.productId == _devicePID && i.vendorId == _deviceVID) {
_correctDevice = i;
print('correct device found');
}
}
}
},
);
}
Widget _getDevicesWithDescription() {
return ElevatedButton(
child: const Text('getDevicesWithDescription'),
onPressed: () async {
var descriptions = await QuickUsb.getDevicesWithDescription();
_deviceList = descriptions.map((e) => e.device).toList();
print('descriptions: ');
for (var i in descriptions) {
print(i);
}
},
);
}
Widget _getDeviceDescription() {
return ElevatedButton(
child: const Text('getDeviceDescription'),
onPressed: () async {
if (_correctDevice == null) {
print('Description of the first device from devicelist:');
var description =
await QuickUsb.getDeviceDescription(_deviceList!.first);
print('description ${description.toMap()}');
} else {
var description =
await QuickUsb.getDeviceDescription(_correctDevice!);
print('description ${description.toMap()}');
}
},
);
}
Widget _hasRequest() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
child: const Text('hasPermission'),
onPressed: () async {
if (_correctDevice == null) {
var hasPermission =
await QuickUsb.hasPermission(_deviceList!.first);
print('first device hasPermission $hasPermission');
} else {
var hasPermission = await QuickUsb.hasPermission(_correctDevice!);
print('correct device hasPermission $hasPermission');
}
},
),
ElevatedButton(
child: const Text('requestPermission'),
onPressed: () async {
if (_correctDevice == null) {
await QuickUsb.requestPermission(_deviceList!.first);
print('first device requestPermission');
} else {
await QuickUsb.requestPermission(_correctDevice!);
print('correct device requestPermission');
}
},
),
],
);
}
Widget _openClose() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
child: const Text('openDevice'),
onPressed: () async {
if (_correctDevice == null) {
var openDevice = await QuickUsb.openDevice(_deviceList!.first);
print('first device openDevice $openDevice');
}
else{
var openDevice = await QuickUsb.openDevice(_correctDevice!);
print('correct device openDevice $openDevice');
}
},
),
ElevatedButton(
child: const Text('closeDevice'),
onPressed: () async {
await QuickUsb.closeDevice();
print('closeDevice');
},
),
],
);
}
UsbConfiguration? _configuration;
Widget _getSetConfiguration() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
child: const Text('getConfiguration'),
onPressed: () async {
_configuration = await QuickUsb.getConfiguration(0);
print('getConfiguration $_configuration');
},
),
ElevatedButton(
child: const Text('setConfiguration'),
onPressed: () async {
var setConfiguration =
await QuickUsb.setConfiguration(_configuration!);
print('setConfiguration $setConfiguration');
},
),
],
);
}
Widget _claimReleaseInterface() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
child: const Text('claimInterface'),
onPressed: () async {
var claimInterface =
await QuickUsb.claimInterface(_configuration!.interfaces[0]);
print('claimInterface $claimInterface');
},
),
ElevatedButton(
child: const Text('releaseInterface'),
onPressed: () async {
var releaseInterface =
await QuickUsb.releaseInterface(_configuration!.interfaces[0]);
print('releaseInterface $releaseInterface');
},
),
],
);
}
Widget _bulkTransfer() {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
child: const Text('bulkTransferIn'),
onPressed: () async {
var endpoint = _configuration!.interfaces[0].endpoints
.firstWhere((e) => e.direction == UsbEndpoint.DIRECTION_IN);
var bulkTransferIn = await QuickUsb.bulkTransferIn(endpoint, 1024);
print('bulkTransferIn $bulkTransferIn');
},
),
ElevatedButton(
child: const Text('bulkTransferOut'),
onPressed: () async {
var data = Uint8List.fromList([0x20, 0x32]);
var endpoint = _configuration!.interfaces[0].endpoints
.firstWhere((e) => e.direction == UsbEndpoint.DIRECTION_OUT);
var bulkTransferOut =
await QuickUsb.bulkTransferOut(endpoint, data);
print('bulkTransferOut $bulkTransferOut');
},
),
],
);
}
}
```