首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >I/颤振( 805):PlatformException(no_fragment_activity,local_auth插件要求活动为FragmentActivity.,null,null)

I/颤振( 805):PlatformException(no_fragment_activity,local_auth插件要求活动为FragmentActivity.,null,null)
EN

Stack Overflow用户
提问于 2021-07-02 07:01:24
回答 1查看 584关注 0票数 1

我是颤振的初学者,我用local_auth: ^1.1.6来验证我的应用指纹。当我触摸手指打印图标,但我得到一个流动的错误。

I/颤振( 805):PlatformException(no_fragment_activity,local_auth插件要求活动为FragmentActivity.,null,null)

我的颤振版本2.2.1 / Dart版本.13.1

有人知道什么解决办法吗?

谢谢

这里是我的密码

代码语言:javascript
复制
 final LocalAuthentication _localAuthentication = LocalAuthentication();
  String _message = "Not Authorized";

  Future<bool> checkingForBioMetrics() async {
    bool canCheckBiometrics = await _localAuthentication.canCheckBiometrics;
    print(canCheckBiometrics);return canCheckBiometrics;
  }
  Future<void> _authenticateMe() async {
    // 8. this method opens a dialog for fingerprint authentication.
    //    we do not need to create a dialog nut it popsup from device natively.
    bool authenticated = false;
    try {
      authenticated = await
      // ignore: deprecated_member_use
      _localAuthentication.authenticateWithBiometrics(
        localizedReason: "Authenticate for Testing",
        // message for dialog
        useErrorDialogs: true,
        // show error in dialog
        stickyAuth: true,
      );
      setState(() {_message = authenticated ? "Authorized" : "Not Authorized";
      });
    } catch (e) {
      print(e);
    }if (!mounted) return;

  }

  @override
  void initState(){
    checkingForBioMetrics();
    super.initState();
  }

  TextEditingController _phoneController = new TextEditingController();
  TextEditingController passwordController = new TextEditingController();
  bool isSeen = true;
  bool isSignIn = false;
  check (BuildContext context){
    if(_phoneController.text.length > 10 && passwordController.text.length > 5){
      setState(() {
        isSignIn = true;
      });
    }else{
      isSignIn = false;
    }
  }





  Container(
                            child: InkWell(
                              onTap: (){
                                _authenticateMe();
                              },
                              child: Container(
                                padding: EdgeInsets.only(right: 0,),
                                child: Image.asset("assets/icons/ic_finger_print.png",scale:7.1,),
                              ),
                            ),
                          ),
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-02 07:27:22

首先要做的是添加权限(您可能已经这样做了):

代码语言:javascript
复制
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.[your.package]">
  <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
  <application...
    ...
    ...
    ...
<manifest>

然后需要将FlutterActivity更改为FlutterFragmentActivity

代码语言:javascript
复制
package com.[your.package]

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }
}

如果您碰巧遇到Theme.AppCompat问题或收到此错误:

代码语言:javascript
复制
Exception has occurred. PlatformException (PlatformException(error, You need to use a Theme.AppCompat theme (or descendant) with this activity., null)) 

那么你需要这样做:

android>app>src>main>res>values>style.xml。改变这一点:

代码语言:javascript
复制
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">

代码语言:javascript
复制
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68220888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档