scanQRCode method

  1. @override
Future<ESPQRCodePayload> scanQRCode({
  1. String? title,
  2. String? description,
  3. String? cancelButtonText,
})
override

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?,
  );
}