使用permission_handler 11.3.0时遇MissingPluginException问题求助
关于permission_handler 11.3.0的MissingPluginException异常解决求助
开发获取位置权限的Demo应用时,使用permission_handler 11.3.0版本触发了MissingPluginException异常,异常截图如下:

代码实现
import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:permission_handler/permission_handler.dart'; void main() { runApp(const MyApp()); } const platform = MethodChannel('your_channel_name'); Future<void> callNativeMethod() async { try { await platform.invokeMethod('nativeMethod'); } catch (e) { print('Error calling native method: $e'); } } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Text and Button Example', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(), ); } } class MyHomePage extends StatelessWidget { @override Widget build(BuildContext context) { final permissionLocation = Permission.location; return Scaffold( appBar: AppBar( title: Text('Demo App'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'Hello, Flutter!', style: TextStyle(fontSize: 24), ), SizedBox(height: 20), ElevatedButton( onPressed: () async { final status = await permissionLocation.status ; if (status.isGranted) { callNativeMethod(); print('Opening Location permission...'); } else { // Permission denied print('Location permission denied.'); } }, child: Text('Press Me!'), ), ], ), ), ); } }
已配置内容
在AndroidManifest文件中添加了位置权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
已尝试的解决操作
- 清理项目文件
- 执行
flutter clean命令 - 重新运行应用
- 升级Flutter版本
问题仍未解决,当前环境依赖:
environment: sdk: '>=3.2.3 <4.0.0' permission_handler: ^11.3.0
解决建议
- 检查自定义MethodChannel实现:代码中调用了自定义
MethodChannel('your_channel_name')的nativeMethod,需确保原生端(Android/iOS)已正确注册该通道并实现对应方法,通道名和方法名必须与Flutter端完全一致,拼写、大小写均不能出错。 - 重新构建依赖与项目:执行
flutter pub get后,删除android/build和ios/Pods(iOS端)文件夹,再重新运行flutter run,避免缓存导致的插件未注册问题。 - 确认插件与Flutter版本兼容性:使用
flutter --version查看当前Flutter版本,若存在隐性兼容问题,可尝试将permission_handler降级至11.0.0或升级至最新稳定版。 - 检查Android原生配置:确认Android项目的
minSdkVersion不低于23(permission_handler 11.x版本要求),同时检查build.gradle中是否正确引入插件依赖。 - 避免热重载/热重启:添加新插件或修改原生配置后,必须完全停止应用进程,再重新运行,热重载无法加载新注册的插件。
- 验证permission_handler注册:若异常出现在权限请求阶段,可尝试单独调用
Permission.location.status测试,确认插件是否正确集成,必要时重新执行flutter pub add permission_handler重新安装插件。
内容的提问来源于stack exchange,提问作者Mohit Lakhanpal
相关产品推荐
相关产品推荐

