You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:31:05