Skip to content

ProtocolException error during runtime for flutter_document_reader_api: ^6.8.1 #23

@Ayan-Qolaris

Description

@Ayan-Qolaris

Before Submitting, be sure to

  • Update to the latest stable version.
  • Read and follow the guides described in the documentation.
  • Try to reproduce in our demo project.
  • Search for your issue in the existing GitHub issues.

Bug Description
When initializing the Regula Database, we are getting the following error:

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(, database preparation failed: com.regula.documentreader.api.errors.DocumentReaderException: java.net.ProtocolException: unexpected end of stream, null, null)

Code

class VerificationInitializingScreen extends StatefulWidget {
  const VerificationInitializingScreen({
    Key? key,
    this.argument,
  }) : super(key: key);

  final Object? argument;

  @override
  State<VerificationInitializingScreen> createState() =>
      _VerificationInitializingScreenState();
}

class _VerificationInitializingScreenState
    extends State<VerificationInitializingScreen> {
  String status = "Downloading Database";

  String progressValue = "0";

  late VerificationInitializationArgumentModel
      verificationInitializationArgument;

  @override
  void initState() {
    super.initState();
    argumentInitialization();
    initPlatformState();

    const EventChannel('flutter_document_reader_api/event/database_progress')
        .receiveBroadcastStream()
        .listen(
      (progress) {
        log("DB Progress -> $progress");
        setState(
          () {
            progressValue = progress;
          },
        );
      },
    );
  }

  void argumentInitialization() {
    verificationInitializationArgument =
        VerificationInitializationArgumentModel.fromMap(
            widget.argument as dynamic ?? {});
  }

  Future<void> initPlatformState() async {
    var prepareDatabase = await DocumentReader.prepareDatabase("Full");
    log("prepareDatabase -> $prepareDatabase");
    setState(() {
      status = "Initializing";
    });
    ByteData byteData = await rootBundle.load("assets/regula.license");
    var documentReaderInitialization = await DocumentReader.initializeReader({
      "license": base64.encode(byteData.buffer
          .asUint8List(byteData.offsetInBytes, byteData.lengthInBytes)),
      "delayedNNLoad": true
    });
    log("documentReaderInitialization -> $documentReaderInitialization");
    setState(() {
      status = "Ready";
    });

    if (context.mounted) {
      Navigator.pushReplacementNamed(
        context,
        Routes.eidExplanation,
        arguments: VerificationInitializationArgumentModel(
          isReKyc: verificationInitializationArgument.isReKyc,
        ).toMap(),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            CircularPercentIndicator(
              radius: (50 / Dimensions.designWidth).w,
              percent: double.parse(progressValue) / 100,
              lineWidth: 5,
              backgroundColor: AppColors.dark30,
              progressColor: AppColors.primary100,
              circularStrokeCap: CircularStrokeCap.round,
              center: Text(
                "$progressValue%",
                style: TextStyles.primaryMedium.copyWith(
                  fontSize: (14 / Dimensions.designWidth).w,
                  color: AppColors.dark80,
                ),
              ),
            ),
            const SizeBox(height: 20),
            Text(
              double.parse(progressValue) < 25
                  ? "Hang tight..."
                  : double.parse(progressValue) < 50
                      ? "Just a few seconds..."
                      : double.parse(progressValue) < 75
                          ? "Getting things ready..."
                          : "Almost there...",
              style: TextStyles.primaryMedium.copyWith(
                fontSize: (14 / Dimensions.designWidth).w,
                color: AppColors.dark80,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Expected behavior
The database should be initialized.

Screenshots

Environment:

  • Device: Google Pixel 5, OnePlus Nord 2 CE
  • OS: Android
  • OS version: Android 13

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions