scanQRCode method
Scan QR code to get device provisioning information
Implementation
@override
Future<ESPQRCodePayload> scanQRCode({
String? title,
String? description,
String? cancelButtonText,
}) async {
final result = await methodChannel.invokeMethod<Map>('scanQRCode', {
'title': title,
'description': description,
'cancelButtonText': cancelButtonText,
});
if (result == null) {
throw Exception('QR code scanning failed');
}
final resultMap = Map<String, dynamic>.from(result);
// Convert the result to ESPQRCodePayload format
return ESPQRCodePayload(
name: resultMap['name'] as String,
transport: ESPTransportType.values.firstWhere(
(e) => e.name == resultMap['transport'],
orElse: () => ESPTransportType.ble,
),
security: ESPSecurityType.values.firstWhere(
(e) => e.name == resultMap['security'],
orElse: () => ESPSecurityType.secure,
),
proofOfPossession: resultMap['pop'] as String?,
username: resultMap['username'] as String?,
password: resultMap['password'] as String?,
);
}