我是颤振的初学者,我用local_auth: ^1.1.6来验证我的应用指纹。当我触摸手指打印图标,但我得到一个流动的错误。
I/颤振( 805):PlatformException(no_fragment_activity,local_auth插件要求活动为FragmentActivity.,null,null)
我的颤振版本2.2.1 / Dart版本.13.1
有人知道什么解决办法吗?
谢谢
这里是我的密码
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,),
),
),
),发布于 2021-07-02 07:27:22
首先要做的是添加权限(您可能已经这样做了):
<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
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问题或收到此错误:
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。改变这一点:
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">至
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">https://stackoverflow.com/questions/68220888
复制相似问题