Skip to content

local_auth: LocalAuthentication.authenticate request via didChangeAppLifecycleState throws PlatformException #77622

@omatt

Description

@omatt

Steps to Reproduce

Minimal Repro

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:local_auth/local_auth.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: BioAuthScreen(),
      // home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), 
    );
  }
}

class BioAuthScreen extends StatefulWidget {
  BioAuthScreen({Key key, this.initFlag = false}) : super(key: key);
  final bool initFlag;

  @override
  _BioAuthScreenState createState() => _BioAuthScreenState();
}

class _BioAuthScreenState extends State<BioAuthScreen>
    with WidgetsBindingObserver {
  final LocalAuthentication _localAuthentication = LocalAuthentication();
  bool _isAuthenticated;

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
    // 1
    WidgetsBinding.instance.addPostFrameCallback((_) async {
      await _getAuthenticated();
    });
  }

  @override
  void didChangeDependencies() async {
    super.didChangeDependencies();
    await Future.delayed(const Duration(milliseconds: 700));
    // 2
    // await _getAuthenticated();
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    switch (state) {
      case AppLifecycleState.resumed:
        debugPrint('App State resumed');
        // await _getAuthenticated();
        Navigator.pushReplacement(
            context, MaterialPageRoute(builder: (context) => BioAuthScreen()));
        break;
      case AppLifecycleState.inactive:
        debugPrint('App State inactive');
        break;
      case AppLifecycleState.paused:
        debugPrint('App State paused');
        break;
      case AppLifecycleState.detached:
        debugPrint('App State detached');
        break;
    }
  }

  Future<List<BiometricType>> _getListOfBiometricTypes() async {
    List<BiometricType> listOfBiometrics;
    try {
      listOfBiometrics = await _localAuthentication.getAvailableBiometrics();
    } on PlatformException catch (e) {
      debugPrint('$e');
    }
    debugPrint('$listOfBiometrics');
    return listOfBiometrics;
  }

  Future<void> _getAuthenticated() async {
    debugPrint('getAuthenticated()');
    var result = false;
    var availableBiometricTypes = await _getListOfBiometricTypes();
    try {
      if (availableBiometricTypes.contains(BiometricType.face) ||
          availableBiometricTypes.contains(BiometricType.fingerprint)) {
        result = await _localAuthentication.authenticate(
          localizedReason: '生体認証',
          useErrorDialogs: true,
          stickyAuth: false,
        );
      }
    } on PlatformException catch (e) {
      debugPrint(
          'Error ${e.code} \n Message: ${e.message} \n Details: ${e.details} ');
    }
    if (!mounted) {
      return;
    }
    debugPrint('result: $result');
    // 3
    if (result) {
      // await Navigator.pushNamed(context, Constants.homeScreenRoute);
      Navigator.push(
        context,
        MaterialPageRoute(
            builder: (context) => MyHomePage(title: 'Flutter Demo Home Page')),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    // WidgetsBinding.instance.addPostFrameCallback((_) async {
    //   await _getAuthenticated();
    // });
    final screenWidth = MediaQuery.of(context).size.width;
    final screenHeight = MediaQuery.of(context).size.height;
    return SafeArea(
      child: Scaffold(
        body: FractionallySizedBox(
          widthFactor: 1,
          heightFactor: 1,
          child: DecoratedBox(
            decoration: const BoxDecoration(
              color: Colors.lightBlueAccent,
            ),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                const Padding(
                  padding: EdgeInsets.all(40.0),
                ),
                // Title
                // AuthTitleComponent(),
                SizedBox(height: screenHeight * 0.28),
                ButtonTheme(
                  minWidth:
                      screenWidth > 600 ? screenWidth * 0.6 : screenWidth * 0.7,
                  height: 45,
                  child: RaisedButton(
                    elevation: 3.0,
                    color: Colors.lightBlue,
                    // 4
                    onPressed: () async {
                      await _getAuthenticated();
                    },
                    child: Text(
                      'BioMetricAuthLogin',
                      style: Theme.of(context)
                          .textTheme
                          .headline2
                          .copyWith(color: Colors.white),
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Use case: app always prompts users to re-authenticate via biometric auth if they left the app.

  1. Run minimal repro on a physical Android device.
  2. Biometric auth dialog pops up, proceed to authenticate
  3. Transitions to Home Screen - Works as expected
  4. Either navigate to Home or check Recent Apps
  5. Navigate back to the app, didChangeAppLifecycleState triggers LocalAuthentication.authenticate request
  6. Biometric auth dialog pops up, proceed to authenticate - this works sometimes at first try.
  7. Repeat steps 4, 5, and 6
  8. Biometric auth dialog pops up, proceed to authenticate, app catches PlatformException from local_auth, doesn't transition to Home screen
I/flutter ( 3209): Error auth_in_progress 
I/flutter ( 3209):  Message: Authentication in progress 
I/flutter ( 3209):  Details: null 
I/flutter ( 3209): result: false

Expected results:
Step 8 shouldn't happen

Actual results:
App catches PlatformException from local_auth without a clear cause on the error logs. A workaround for this is to click a widget to manually trigger LocalAuthentication.authenticate

issue demo

Logs
[  +54 ms] --------- beginning of main
           03-09 02:22:59.897 W/MessageQueue( 4641): Handler (android.os.Handler) {e8667d2} sending message to a Handler on a dead thread
           03-09 02:22:59.897 W/MessageQueue( 4641): java.lang.IllegalStateException: Handler (android.os.Handler) {e8667d2} sending message to a Handler on a dead thread
           03-09 02:22:59.897 W/MessageQueue( 4641):    at android.os.MessageQueue.enqueueMessage(MessageQueue.java:545)
           03-09 02:22:59.897 W/MessageQueue( 4641):    at android.os.Handler.enqueueMessage(Handler.java:662)
           03-09 02:22:59.897 W/MessageQueue( 4641):    at android.os.Handler.sendMessageAtTime(Handler.java:631)
           03-09 02:22:59.897 W/MessageQueue( 4641):    at android.os.Handler.sendMessageDelayed(Handler.java:601)
           03-09 02:22:59.897 W/MessageQueue( 4641):    at android.os.Handler.post(Handler.java:357)
           03-09 02:22:59.897 W/MessageQueue( 4641):    at android.os.ResultReceiver$MyResultReceiver.send(ResultReceiver.java:57)
           03-09 02:22:59.897 W/MessageQueue( 4641):    at com.android.internal.os.IResultReceiver$Stub.onTransact(IResultReceiver.java:58)
           03-09 02:22:59.897 W/MessageQueue( 4641):    at android.os.Binder.execTransact(Binder.java:697)
[   +9 ms] executing: adb -s CVH5T16220000225 shell am start -a android.intent.action.RUN -f 0x20000000 --ez
enable-background-compilation true --ez enable-dart-profiling true --ez enable-checked-mode true --ez verify-entry-points true
com.demo.sample66502065/com.demo.sample66502065.MainActivity
[  +88 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=com.demo.sample66502065/.MainActivity (has extras) }
[        ] Waiting for observatory port to be available...
[ +720 ms] Observatory URL on device: http://127.0.0.1:49576/hoJ2uR8-CmY=/
[   +1 ms] executing: adb -s CVH5T16220000225 forward tcp:0 tcp:49576
[   +9 ms] 63550
[        ] Forwarded host port 63550 to device port 49576 for Observatory
[   +5 ms] Caching compiled dill
[  +72 ms] Connecting to service protocol: http://127.0.0.1:63550/hoJ2uR8-CmY=/
[ +424 ms] Launching a Dart Developer Service (DDS) instance at http://127.0.0.1:0, connecting to VM service at http://127.0.0.1:63550/hoJ2uR8-CmY=/.
[ +171 ms] DDS is listening at http://127.0.0.1:63557/m57ap9rw2e0=/.
[  +52 ms] Successfully connected to service protocol: http://127.0.0.1:63550/hoJ2uR8-CmY=/
[ +282 ms] DevFS: Creating new filesystem on the device (null)
[  +55 ms] DevFS: Created new filesystem on the device (file:///data/user/0/com.demo.sample66502065/code_cache/sample66502065CJXLPN/sample66502065/)
[   +4 ms] Updating assets
[  +75 ms] Syncing files to device Nexus 6P...
[   +1 ms] <- reset
[        ] Compiling dart to kernel with 0 updated files
[   +1 ms] <- recompile package:sample66502065/main.dart 343232a3-2b51-4e77-bca5-3468cacbd3cb
[        ] <- 343232a3-2b51-4e77-bca5-3468cacbd3cb
[  +71 ms] Updating files.
[        ] DevFS: Sync finished
[   +1 ms] Syncing files to device Nexus 6P... (completed in 75ms)
[        ] Synced 0.0MB.
[        ] <- accept
[  +18 ms] Connected to _flutterView/0x703136e820.
[   +1 ms] Flutter run key commands.
[   +1 ms] r Hot reload. 🔥🔥🔥
[   +1 ms] R Hot restart.
[        ] h Repeat this help message.
[        ] d Detach (terminate "flutter run" but leave application running).
[        ] c Clear the screen
[        ] q Quit (terminate the application on the device).
[        ] An Observatory debugger and profiler on Nexus 6P is available at: http://127.0.0.1:63557/m57ap9rw2e0=/
[        ] 
           Flutter DevTools, a Flutter debugger and profiler, on Nexus 6P is available at: http://127.0.0.1:9102?uri=http%3A%2F%2F127.0.0.1%3A63557%2Fm57ap9rw2e0%3D%2F
[        ] Running with unsound null safety
[        ] For more information see https://dart.dev/null-safety/unsound-null-safety
[+1533 ms] I/flutter ( 4668): getAuthenticated()
[  +63 ms] I/flutter ( 4668): [BiometricType.fingerprint]
[  +32 ms] W/ResourceType( 4668): Invalid package identifier when getting bag for resource number 0xffff0000
[        ] W/ResourceType( 4668): Invalid package identifier when getting bag for resource number 0x000005c2
[  +69 ms] I/zygote64( 4668): Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of:
Landroid/view/View$OnUnhandledKeyEventListener;
[        ] I/zygote64( 4668):   at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener)
(ViewCompat.java:2421)
[        ] I/zygote64( 4668):   at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:769)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:649)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:542)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDialog.setContentView(int) (AppCompatDialog.java:95)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertController.installContent() (AlertController.java:232)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertDialog.onCreate(android.os.Bundle) (AlertDialog.java:279)
[        ] I/zygote64( 4668):   at void android.app.Dialog.dispatchOnCreate(android.os.Bundle) (Dialog.java:403)
[        ] I/zygote64( 4668):   at void android.app.Dialog.show() (Dialog.java:302)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.DialogFragment.onStart() (DialogFragment.java:486)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.Fragment.performStart() (Fragment.java:2632)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(androidx.fragment.app.Fragment, int, int, int, boolean) (FragmentManagerImpl.java:915)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(androidx.fragment.app.Fragment) (FragmentManagerImpl.java:1238)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(int, boolean) (FragmentManagerImpl.java:1303)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.BackStackRecord.executeOps() (BackStackRecord.java:439)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOps(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:2079)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:1869)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(java.util.ArrayList, java.util.ArrayList)
(FragmentManagerImpl.java:1824)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.execPendingActions() (FragmentManagerImpl.java:1727)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.executePendingTransactions() (FragmentManagerImpl.java:183)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticateInternal(androidx.biometric.BiometricPrompt$PromptInfo,
androidx.biometric.BiometricPrompt$CryptoObject) (BiometricPrompt.java:749)
[   +5 ms] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticate(androidx.biometric.BiometricPrompt$PromptInfo) (BiometricPrompt.java:658)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.AuthenticationHelper.authenticate() (AuthenticationHelper.java:109)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.authenticate(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:199)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.onMethodCall(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:101)
[        ] I/zygote64( 4668):   at void io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(java.nio.ByteBuffer,
io.flutter.plugin.common.BinaryMessenger$BinaryReply) (MethodChannel.java:233)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(java.lang.String, byte[], int) (DartMessenger.java:85)
[  +14 ms] I/zygote64( 4668):   at void io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(java.lang.String, byte[], int) (FlutterJNI.java:818)
[        ] I/zygote64( 4668):   at void android.os.MessageQueue.nativePollOnce(long, int) (MessageQueue.java:-2)
[        ] I/zygote64( 4668):   at android.os.Message android.os.MessageQueue.next() (MessageQueue.java:325)
[        ] I/zygote64( 4668):   at void android.os.Looper.loop() (Looper.java:142)
[        ] I/zygote64( 4668):   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
[        ] I/zygote64( 4668):   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
[        ] I/zygote64( 4668):   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
[   +1 ms] I/zygote64( 4668):   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
[        ] I/zygote64( 4668): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file
"/data/app/com.demo.sample66502065-gYTZQy-o81I7s5yBEHSEGQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.demo.sample66502065-gYTZQy-o81I7s5yBEHSEGQ==/lib/arm64,
/data/app/com.demo.sample66502065-gYTZQy-o81I7s5yBEHSEGQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
[        ] I/zygote64( 4668):   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:125)
[        ] I/zygote64( 4668):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
[        ] I/zygote64( 4668):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
[        ] I/zygote64( 4668):   at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener)
(ViewCompat.java:2421)
[        ] I/zygote64( 4668):   at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:769)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:649)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:542)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDialog.setContentView(int) (AppCompatDialog.java:95)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertController.installContent() (AlertController.java:232)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertDialog.onCreate(android.os.Bundle) (AlertDialog.java:279)
[        ] I/zygote64( 4668):   at void android.app.Dialog.dispatchOnCreate(android.os.Bundle) (Dialog.java:403)
[        ] I/zygote64( 4668):   at void android.app.Dialog.show() (Dialog.java:302)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.DialogFragment.onStart() (DialogFragment.java:486)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.Fragment.performStart() (Fragment.java:2632)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(androidx.fragment.app.Fragment, int, int, int, boolean) (FragmentManagerImpl.java:915)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(androidx.fragment.app.Fragment) (FragmentManagerImpl.java:1238)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(int, boolean) (FragmentManagerImpl.java:1303)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.BackStackRecord.executeOps() (BackStackRecord.java:439)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOps(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:2079)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:1869)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(java.util.ArrayList, java.util.ArrayList)
(FragmentManagerImpl.java:1824)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.execPendingActions() (FragmentManagerImpl.java:1727)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.executePendingTransactions() (FragmentManagerImpl.java:183)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticateInternal(androidx.biometric.BiometricPrompt$PromptInfo,
androidx.biometric.BiometricPrompt$CryptoObject) (BiometricPrompt.java:749)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticate(androidx.biometric.BiometricPrompt$PromptInfo) (BiometricPrompt.java:658)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.AuthenticationHelper.authenticate() (AuthenticationHelper.java:109)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.authenticate(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:199)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.onMethodCall(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:101)
[        ] I/zygote64( 4668):   at void io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(java.nio.ByteBuffer,
io.flutter.plugin.common.BinaryMessenger$BinaryReply) (MethodChannel.java:233)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(java.lang.String, byte[], int) (DartMessenger.java:85)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(java.lang.String, byte[], int) (FlutterJNI.java:818)
[        ] I/zygote64( 4668):   at void android.os.MessageQueue.nativePollOnce(long, int) (MessageQueue.java:-2)
[        ] I/zygote64( 4668):   at android.os.Message android.os.MessageQueue.next() (MessageQueue.java:325)
[        ] I/zygote64( 4668):   at void android.os.Looper.loop() (Looper.java:142)
[        ] I/zygote64( 4668):   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
[        ] I/zygote64( 4668):   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
[        ] I/zygote64( 4668):   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
[        ] I/zygote64( 4668):   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
[        ] I/zygote64( 4668): 
[        ] I/zygote64( 4668): Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of:
Landroid/view/View$OnUnhandledKeyEventListener;
[        ] I/zygote64( 4668):   at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener)
(ViewCompat.java:2421)
[        ] I/zygote64( 4668):   at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:769)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:649)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:542)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDialog.setContentView(int) (AppCompatDialog.java:95)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertController.installContent() (AlertController.java:232)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertDialog.onCreate(android.os.Bundle) (AlertDialog.java:279)
[        ] I/zygote64( 4668):   at void android.app.Dialog.dispatchOnCreate(android.os.Bundle) (Dialog.java:403)
[        ] I/zygote64( 4668):   at void android.app.Dialog.show() (Dialog.java:302)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.DialogFragment.onStart() (DialogFragment.java:486)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.Fragment.performStart() (Fragment.java:2632)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(androidx.fragment.app.Fragment, int, int, int, boolean) (FragmentManagerImpl.java:915)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(androidx.fragment.app.Fragment) (FragmentManagerImpl.java:1238)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(int, boolean) (FragmentManagerImpl.java:1303)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.BackStackRecord.executeOps() (BackStackRecord.java:439)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOps(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:2079)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:1869)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(java.util.ArrayList, java.util.ArrayList)
(FragmentManagerImpl.java:1824)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.execPendingActions() (FragmentManagerImpl.java:1727)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.executePendingTransactions() (FragmentManagerImpl.java:183)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticateInternal(androidx.biometric.BiometricPrompt$PromptInfo,
androidx.biometric.BiometricPrompt$CryptoObject) (BiometricPrompt.java:749)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticate(androidx.biometric.BiometricPrompt$PromptInfo) (BiometricPrompt.java:658)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.AuthenticationHelper.authenticate() (AuthenticationHelper.java:109)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.authenticate(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:199)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.onMethodCall(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:101)
[        ] I/zygote64( 4668):   at void io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(java.nio.ByteBuffer,
io.flutter.plugin.common.BinaryMessenger$BinaryReply) (MethodChannel.java:233)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(java.lang.String, byte[], int) (DartMessenger.java:85)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(java.lang.String, byte[], int) (FlutterJNI.java:818)
[        ] I/zygote64( 4668):   at void android.os.MessageQueue.nativePollOnce(long, int) (MessageQueue.java:-2)
[        ] I/zygote64( 4668):   at android.os.Message android.os.MessageQueue.next() (MessageQueue.java:325)
[        ] I/zygote64( 4668):   at void android.os.Looper.loop() (Looper.java:142)
[        ] I/zygote64( 4668):   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
[        ] I/zygote64( 4668):   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
[        ] I/zygote64( 4668):   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
[        ] I/zygote64( 4668):   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
[        ] I/zygote64( 4668): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file
"/data/app/com.demo.sample66502065-gYTZQy-o81I7s5yBEHSEGQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.demo.sample66502065-gYTZQy-o81I7s5yBEHSEGQ==/lib/arm64,
/data/app/com.demo.sample66502065-gYTZQy-o81I7s5yBEHSEGQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
[        ] I/zygote64( 4668):   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:125)
[        ] I/zygote64( 4668):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
[        ] I/zygote64( 4668):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
[   +1 ms] I/zygote64( 4668):   at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener)
(ViewCompat.java:2421)
[        ] I/zygote64( 4668):   at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:769)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:649)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:542)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDialog.setContentView(int) (AppCompatDialog.java:95)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertController.installContent() (AlertController.java:232)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertDialog.onCreate(android.os.Bundle) (AlertDialog.java:279)
[        ] I/zygote64( 4668):   at void android.app.Dialog.dispatchOnCreate(android.os.Bundle) (Dialog.java:403)
[        ] I/zygote64( 4668):   at void android.app.Dialog.show() (Dialog.java:302)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.DialogFragment.onStart() (DialogFragment.java:486)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.Fragment.performStart() (Fragment.java:2632)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(androidx.fragment.app.Fragment, int, int, int, boolean) (FragmentManagerImpl.java:915)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(androidx.fragment.app.Fragment) (FragmentManagerImpl.java:1238)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(int, boolean) (FragmentManagerImpl.java:1303)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.BackStackRecord.executeOps() (BackStackRecord.java:439)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOps(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:2079)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:1869)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(java.util.ArrayList, java.util.ArrayList)
(FragmentManagerImpl.java:1824)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.execPendingActions() (FragmentManagerImpl.java:1727)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.executePendingTransactions() (FragmentManagerImpl.java:183)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticateInternal(androidx.biometric.BiometricPrompt$PromptInfo,
androidx.biometric.BiometricPrompt$CryptoObject) (BiometricPrompt.java:749)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticate(androidx.biometric.BiometricPrompt$PromptInfo) (BiometricPrompt.java:658)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.AuthenticationHelper.authenticate() (AuthenticationHelper.java:109)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.authenticate(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:199)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.onMethodCall(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:101)
[        ] I/zygote64( 4668):   at void io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(java.nio.ByteBuffer,
io.flutter.plugin.common.BinaryMessenger$BinaryReply) (MethodChannel.java:233)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(java.lang.String, byte[], int) (DartMessenger.java:85)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(java.lang.String, byte[], int) (FlutterJNI.java:818)
[        ] I/zygote64( 4668):   at void android.os.MessageQueue.nativePollOnce(long, int) (MessageQueue.java:-2)
[        ] I/zygote64( 4668):   at android.os.Message android.os.MessageQueue.next() (MessageQueue.java:325)
[        ] I/zygote64( 4668):   at void android.os.Looper.loop() (Looper.java:142)
[        ] I/zygote64( 4668):   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
[        ] I/zygote64( 4668):   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
[        ] I/zygote64( 4668):   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
[        ] I/zygote64( 4668):   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
[        ] I/zygote64( 4668): 
[        ] I/zygote64( 4668): Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of:
Landroid/view/View$OnUnhandledKeyEventListener;
[        ] I/zygote64( 4668):   at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener)
(ViewCompat.java:2421)
[        ] I/zygote64( 4668):   at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:769)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:649)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:542)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDialog.setContentView(int) (AppCompatDialog.java:95)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertController.installContent() (AlertController.java:232)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertDialog.onCreate(android.os.Bundle) (AlertDialog.java:279)
[        ] I/zygote64( 4668):   at void android.app.Dialog.dispatchOnCreate(android.os.Bundle) (Dialog.java:403)
[        ] I/zygote64( 4668):   at void android.app.Dialog.show() (Dialog.java:302)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.DialogFragment.onStart() (DialogFragment.java:486)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.Fragment.performStart() (Fragment.java:2632)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(androidx.fragment.app.Fragment, int, int, int, boolean) (FragmentManagerImpl.java:915)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(androidx.fragment.app.Fragment) (FragmentManagerImpl.java:1238)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(int, boolean) (FragmentManagerImpl.java:1303)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.BackStackRecord.executeOps() (BackStackRecord.java:439)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOps(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:2079)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:1869)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(java.util.ArrayList, java.util.ArrayList)
(FragmentManagerImpl.java:1824)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.execPendingActions() (FragmentManagerImpl.java:1727)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.executePendingTransactions() (FragmentManagerImpl.java:183)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticateInternal(androidx.biometric.BiometricPrompt$PromptInfo,
androidx.biometric.BiometricPrompt$CryptoObject) (BiometricPrompt.java:749)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticate(androidx.biometric.BiometricPrompt$PromptInfo) (BiometricPrompt.java:658)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.AuthenticationHelper.authenticate() (AuthenticationHelper.java:109)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.authenticate(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:199)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.onMethodCall(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:101)
[        ] I/zygote64( 4668):   at void io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(java.nio.ByteBuffer,
io.flutter.plugin.common.BinaryMessenger$BinaryReply) (MethodChannel.java:233)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(java.lang.String, byte[], int) (DartMessenger.java:85)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(java.lang.String, byte[], int) (FlutterJNI.java:818)
[        ] I/zygote64( 4668):   at void android.os.MessageQueue.nativePollOnce(long, int) (MessageQueue.java:-2)
[        ] I/zygote64( 4668):   at android.os.Message android.os.MessageQueue.next() (MessageQueue.java:325)
[        ] I/zygote64( 4668):   at void android.os.Looper.loop() (Looper.java:142)
[        ] I/zygote64( 4668):   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
[        ] I/zygote64( 4668):   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
[        ] I/zygote64( 4668):   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
[        ] I/zygote64( 4668):   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
[        ] I/zygote64( 4668): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file
"/data/app/com.demo.sample66502065-gYTZQy-o81I7s5yBEHSEGQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.demo.sample66502065-gYTZQy-o81I7s5yBEHSEGQ==/lib/arm64,
/data/app/com.demo.sample66502065-gYTZQy-o81I7s5yBEHSEGQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
[        ] I/zygote64( 4668):   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:125)
[        ] I/zygote64( 4668):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
[        ] I/zygote64( 4668):   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
[        ] I/zygote64( 4668):   at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener)
(ViewCompat.java:2421)
[        ] I/zygote64( 4668):   at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:769)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:649)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:542)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AppCompatDialog.setContentView(int) (AppCompatDialog.java:95)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertController.installContent() (AlertController.java:232)
[        ] I/zygote64( 4668):   at void androidx.appcompat.app.AlertDialog.onCreate(android.os.Bundle) (AlertDialog.java:279)
[        ] I/zygote64( 4668):   at void android.app.Dialog.dispatchOnCreate(android.os.Bundle) (Dialog.java:403)
[        ] I/zygote64( 4668):   at void android.app.Dialog.show() (Dialog.java:302)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.DialogFragment.onStart() (DialogFragment.java:486)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.Fragment.performStart() (Fragment.java:2632)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(androidx.fragment.app.Fragment, int, int, int, boolean) (FragmentManagerImpl.java:915)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(androidx.fragment.app.Fragment) (FragmentManagerImpl.java:1238)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.moveToState(int, boolean) (FragmentManagerImpl.java:1303)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.BackStackRecord.executeOps() (BackStackRecord.java:439)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOps(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:2079)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(java.util.ArrayList, java.util.ArrayList, int, int) (FragmentManagerImpl.java:1869)
[        ] I/zygote64( 4668):   at void androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(java.util.ArrayList, java.util.ArrayList)
(FragmentManagerImpl.java:1824)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.execPendingActions() (FragmentManagerImpl.java:1727)
[        ] I/zygote64( 4668):   at boolean androidx.fragment.app.FragmentManagerImpl.executePendingTransactions() (FragmentManagerImpl.java:183)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticateInternal(androidx.biometric.BiometricPrompt$PromptInfo,
androidx.biometric.BiometricPrompt$CryptoObject) (BiometricPrompt.java:749)
[        ] I/zygote64( 4668):   at void androidx.biometric.BiometricPrompt.authenticate(androidx.biometric.BiometricPrompt$PromptInfo) (BiometricPrompt.java:658)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.AuthenticationHelper.authenticate() (AuthenticationHelper.java:109)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.authenticate(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:199)
[        ] I/zygote64( 4668):   at void io.flutter.plugins.localauth.LocalAuthPlugin.onMethodCall(io.flutter.plugin.common.MethodCall, io.flutter.plugin.common.MethodChannel$Result)
(LocalAuthPlugin.java:101)
[        ] I/zygote64( 4668):   at void io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(java.nio.ByteBuffer,
io.flutter.plugin.common.BinaryMessenger$BinaryReply) (MethodChannel.java:233)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(java.lang.String, byte[], int) (DartMessenger.java:85)
[        ] I/zygote64( 4668):   at void io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(java.lang.String, byte[], int) (FlutterJNI.java:818)
[        ] I/zygote64( 4668):   at void android.os.MessageQueue.nativePollOnce(long, int) (MessageQueue.java:-2)
[        ] I/zygote64( 4668):   at android.os.Message android.os.MessageQueue.next() (MessageQueue.java:325)
[        ] I/zygote64( 4668):   at void android.os.Looper.loop() (Looper.java:142)
[        ] I/zygote64( 4668):   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
[        ] I/zygote64( 4668):   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
[        ] I/zygote64( 4668):   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
[        ] I/zygote64( 4668):   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
[        ] I/zygote64( 4668): 
[  +70 ms] I/zygote64( 4668): Do partial code cache collection, code=23KB, data=29KB
[        ] I/zygote64( 4668): After code cache collection, code=23KB, data=29KB
[        ] I/zygote64( 4668): Increasing code cache capacity to 128KB
[ +321 ms] I/zygote64( 4668): Do partial code cache collection, code=61KB, data=50KB
[        ] I/zygote64( 4668): After code cache collection, code=61KB, data=50KB
[        ] I/zygote64( 4668): Increasing code cache capacity to 256KB
[+19538 ms] I/flutter ( 4668): result: true
[+3802 ms] I/flutter ( 4668): App State inactive
[  +31 ms] I/flutter ( 4668): App State paused
[+1767 ms] I/flutter ( 4668): App State resumed
[  +26 ms] E/BpSurfaceComposerClient( 4668): Failed to transact (-1)
[        ] E/BpSurfaceComposerClient( 4668): Failed to transact (-1)
[  +68 ms] I/flutter ( 4668): getAuthenticated()
[   +5 ms] I/flutter ( 4668): [BiometricType.fingerprint]
[   +8 ms] W/ResourceType( 4668): Invalid package identifier when getting bag for resource number 0xffff0000
[        ] W/ResourceType( 4668): Invalid package identifier when getting bag for resource number 0x000005c2
[ +121 ms] I/zygote64( 4668): Compiler allocated 7MB to compile void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int)
[  +66 ms] I/zygote64( 4668): Do full code cache collection, code=123KB, data=110KB
[        ] I/zygote64( 4668): After code cache collection, code=117KB, data=76KB
[+4651 ms] I/flutter ( 4668): result: true
[+1789 ms] I/flutter ( 4668): App State inactive
[  +16 ms] I/flutter ( 4668): App State inactive
[  +16 ms] I/flutter ( 4668): App State paused
[  +32 ms] I/flutter ( 4668): App State paused
[+1243 ms] I/flutter ( 4668): App State resumed
[  +33 ms] I/flutter ( 4668): App State resumed
[        ] E/BpSurfaceComposerClient( 4668): Failed to transact (-1)
[        ] E/BpSurfaceComposerClient( 4668): Failed to transact (-1)
[ +107 ms] I/flutter ( 4668): getAuthenticated()
[   +7 ms] I/flutter ( 4668): getAuthenticated()
[        ] I/flutter ( 4668): [BiometricType.fingerprint]
[   +8 ms] I/flutter ( 4668): [BiometricType.fingerprint]
[   +3 ms] W/ResourceType( 4668): Invalid package identifier when getting bag for resource number 0xffff0000
[        ] W/ResourceType( 4668): Invalid package identifier when getting bag for resource number 0x000005c2
[  +85 ms] I/flutter ( 4668): Error auth_in_progress 
[        ] I/flutter ( 4668):  Message: Authentication in progress 
[   +1 ms] I/flutter ( 4668):  Details: null 
[        ] I/flutter ( 4668): result: false
[  +51 ms] I/zygote64( 4668): Do partial code cache collection, code=122KB, data=96KB
[        ] I/zygote64( 4668): After code cache collection, code=122KB, data=96KB
[        ] I/zygote64( 4668): Increasing code cache capacity to 512KB


flutter doctor --verbose
[✓] Flutter (Channel stable, 2.0.0, on macOS 11.2.2 20D80 darwin-x64, locale en-PH)
    • Flutter version 2.0.0
    • Framework revision 60bd88df91 (5 days ago), 2021-03-03 09:13:17 -0800
    • Engine revision 40441def69
    • Dart version 2.12.0

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0-rc1)
    • Platform android-30, build-tools 31.0.0-rc1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.10.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.53.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.18.1

[✓] Connected device (2 available)
    • Nexus 6P (mobile) • CVH5T16220000225 • android-arm64  • Android 8.1.0 (API 27)
    • Chrome (web)      • chrome           • web-javascript • Google Chrome 89.0.4389.82

• No issues found!
Process finished with exit code 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listfound in release: 2.0Found to occur in 2.0has reproducible stepsThe issue has been confirmed reproducible and is ready to work onp: local_authPlugin for local authentificationpackageflutter/packages repository. See also p: labels.r: fixedIssue is closed as already fixed in a newer version

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions