Chucker-Flutter技术问题:为何Chucker未显示通知?
Chucker未显示通知的排查方向及解决办法
未完成Chucker基础初始化
Chucker需要在App启动阶段完成全局初始化,仅添加Dio拦截器不足以触发通知。你需要在main函数中初始化Chucker,或者在MaterialApp中配置导航观察者:void main() { ChuckerFlutter.init(showNotification: true); runApp(const MyApp()); } // 或者在MaterialApp中添加导航观察者 MaterialApp( navigatorObservers: [ChuckerFlutter.navigatorObserver], // 其他App配置 )拦截器添加晚于请求发起
如果你把_dio作为全局变量提前初始化,而拦截器是在initState里才添加,那此时之前发起的请求不会被Chucker捕获。调整代码确保拦截器添加后再执行请求:late Dio _dio; @override void initState() { super.initState(); _dio = Dio(BaseOptions( sendTimeout: const Duration(seconds: 30).inMilliseconds, connectTimeout: const Duration(seconds: 30).inMilliseconds, receiveTimeout: const Duration(seconds: 30).inMilliseconds, )); _dio.interceptors.add(ChuckerDioInterceptor()); // 确保请求在拦截器添加后执行 _dio.get('$_baseUrl$path'); }通知权限未授予(Android 13+)
Android 13及以上系统需要单独申请POST_NOTIFICATIONS权限,先在AndroidManifest.xml中声明权限:<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />再在运行时请求权限:
if (Platform.isAndroid) { final permissionStatus = await Permission.notification.request(); if (!permissionStatus.isGranted) { // 提示用户开启权限 } }Chucker配置关闭了通知
确认初始化Chucker时是否开启了通知,默认是开启的,但如果手动配置过需检查:ChuckerFlutter.init( showNotification: true, // 明确开启通知 showOnRelease: false, // 发布版默认不显示,按需调整 );请求未实际执行
检查_dio.get是否真的被调用,比如是否有条件分支跳过了请求,或者请求抛出未捕获的异常。可以添加日志或try-catch块确认请求执行状态。
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

