错误:PlatformException(no_fragment_activity,local_auth 插件要求活动是 FragmentActivity。,空)

Dev*_*yas 12 flutter flutter-dependencies

使用 local_auth 版本 0.6.0 时出现此错误 它适用于 iOS,但在 android 中出现此错误。已经实现了,class MainActivity: FlutterFragmentActivity()但是还是出现这个问题

aki*_*han 20

这就是我为解决这个问题所做的

更改MainActivity.kt如下

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在更改此设置后MainActivity.kt,我还遇到了Theme.AppCompat. 请查看https://gist.github.com/akifarhan/f70a2c777651f2ea61a15eb92a5939c1以获取解决方案。


Ebu*_*eka 12

来自文档 - https://pub.dev/documentation/local_auth/latest/

只需在 MainActivity.kt 中使用以下代码

 package [package ID here]

    import io.flutter.embedding.android.FlutterFragmentActivity
    
    class MainActivity: FlutterFragmentActivity() {
    }
Run Code Online (Sandbox Code Playgroud)

卸载应用程序的当前版本,然后再次重建

顺便说一句,请确保您没有多次拨打电话

 auth.authenticate(...)
Run Code Online (Sandbox Code Playgroud)


Wis*_*keh 4

更改您的主要活动以覆盖 FlutterFragmentActivity

import android.os.Bundle
import io.flutter.app.FlutterFragmentActivity
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      GeneratedPluginRegistrant.registerWith(this)
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 flutter embedding 版本 2

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

class MainActivity: FlutterFragmentActivity() {
   override fun configureFlutterEngine(@NonNull flutterEngine: 
     FlutterEngine) {
     GeneratedPluginRegistrant.registerWith(flutterEngine)
   }
}
Run Code Online (Sandbox Code Playgroud)