Flutter中shared_preferences插件找不到错误的解决方法
你遇到的问题是Android端插件依赖未正确同步,或自动生成的注册文件引用了错误包路径,以下是具体解决步骤:
清理项目并重新获取依赖
依次执行以下命令:flutter clean flutter pub get进入项目
android目录,执行gradle清理:# macOS/Linux ./gradlew clean # Windows gradlew clean重新生成自动注册文件
GeneratedPluginRegistrant是Flutter自动生成的文件,禁止手动修改。删除当前的GeneratedPluginRegistrant.java文件(路径:android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java),重新运行项目后Flutter会自动生成正确的注册文件。检查版本兼容性
你的Flutter SDK版本3.3.0-279.0.dev符合shared_preferences: ^2.2.2的要求,但需确保Android项目配置兼容:- 打开
android/build.gradle,确认ext.kotlin_version至少为1.7.10 - 确认gradle插件版本与Flutter版本匹配,比如
classpath 'com.android.tools.build:gradle:7.4.2'
- 打开
同步Android项目
在Android Studio中点击工具栏的"Sync Project with Gradle Files"按钮,确保所有Android端依赖完成下载。
你提供的错误代码及配置
报错的GeneratedPluginRegistrant代码:
package io.flutter.plugins; import androidx.annotation.Keep; import androidx.annotation.NonNull; import io.flutter.Log; import io.flutter.embedding.engine.FlutterEngine; /** * Generated file. Do not edit. * This file is generated by the Flutter tool based on the * plugins that support the Android platform. */ @Keep public final class GeneratedPluginRegistrant { private static final String TAG = "GeneratedPluginRegistrant"; public static void registerWith(@NonNull FlutterEngine flutterEngine) { try { flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin()); } catch (Exception e) { Log.e(TAG, "Error registering plugin shared_preferences_android, io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin", e); } try { flutterEngine.getPlugins().add(new fman.ge.smart_auth.SmartAuthPlugin()); } catch (Exception e) { Log.e(TAG, "Error registering plugin smart_auth, fman.ge.smart_auth.SmartAuthPlugin", e); } } }
你的pubspec.yml配置:
name: edu_tracker_admin_app_2024 description: "A new Flutter project." publish_to: 'none' version: 1.0.0+1 environment: sdk: '3.3.0-279.0.dev' dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.6 pinput: ^3.0.1 http: ^1.2.0 shared_preferences: ^2.2.2 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^3.0.0 flutter: uses-material-design: true assets: - assets/images/ fonts: - family: Philosopher fonts: - asset: assets/fonts/Philosopher-Bold.ttf - asset: assets/fonts/Philosopher-Italic.ttf - asset: assets/fonts/Philosopher-Regular.ttf
内容的提问来源于stack exchange,提问作者Sumit Singh
相关产品推荐
相关产品推荐

