Enhance USB serial plugin for Android and iPadOS with DriverKit support

- Updated README.md to reflect platform support for iPadOS.
- Implemented isDriverAvailable method in FlutterUsbSerialPlugin for DriverKit readiness check.
- Added DriverKitSerialClient C source and header files for iPadOS integration.
- Created Swift Package for iPadOS support.
- Updated pubspec.yaml and flutter_usb_serial.dart to clarify platform compatibility.
- Enhanced tests to verify isDriverAvailable functionality.

Signed-off-by: Tony <tonylu@tony-cloud.com>
This commit is contained in:
Tony
2026-08-01 20:40:46 +08:00
parent 2d7fc43ea2
commit 17414656a9
11 changed files with 724 additions and 31 deletions
+25 -1
View File
@@ -1,10 +1,16 @@
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_usb_serial/flutter_usb_serial.dart';
import 'package:flutter_usb_serial/flutter_usb_serial_method_channel.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
test('$MethodChannelFlutterUsbSerial can be constructed', () {
expect(MethodChannelFlutterUsbSerial(), isA<MethodChannelFlutterUsbSerial>());
expect(
MethodChannelFlutterUsbSerial(),
isA<MethodChannelFlutterUsbSerial>(),
);
});
test('UsbSerialDevice maps fields from method channel payloads', () {
@@ -25,4 +31,22 @@ void main() {
expect(device.serialNumber, 'SN-42');
expect(device.toMap()['deviceId'], 7);
});
test(
'isDriverAvailable forwards the native DriverKit readiness result',
() async {
const channel = MethodChannel('flutter_usb_serial/methods');
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(channel, (call) async {
expect(call.method, 'isDriverAvailable');
return true;
});
addTearDown(() {
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(channel, null);
});
expect(await FlutterUsbSerial.isDriverAvailable(), isTrue);
},
);
}