Skip to content

[BUG] flutter_ume_kit_dio_plus 解析请求头出错 #126

Open
@jixiaoyong

Description

@jixiaoyong

Steps to Reproduce 复现步骤

这里第 236 行的代码有漏洞,如果 headers 里面的参数值为数字等非 String 的话则会出错。

final Map<String, List<String>> map = _request.headers.map(
(key, value) => MapEntry(
key,
value is Iterable ? value.map((v) => v.toString()).toList() : [value],
),
);

【修改方法】为将 value 转为 String 类型:
value is Iterable ? value.map((v) => v.toString()).toList() : [value.toString()],

  1. dio添加添加参数{"key":1}
  2. 正常进行网络请求
  3. 打开 ume 的 DioInspector 找到刚刚的网络请求,并点击【详情】,页面报错
  4. 查看日志提示:type 'int' is not a subtype of type 'String'

Expected results 期望结果:
预期正常展示网络请求详情
Actual results 实际结果:
实际上请求出错:
image

Error log 错误日志

The following _TypeError was thrown building ValueListenableBuilder<bool>(dirty, state: _ValueListenableBuilderState<bool>#08b6e):
type 'int' is not a subtype of type 'String'

The relevant error-causing widget was: 
  DioInspector DioInspector:file:///Users/username/dev/workspace/work/project_name/lib/main.dart:30:7
When the exception was thrown, this was the stack: 
#0      _ResponseCardState._requestHeadersBuilder.<anonymous closure> (package:flutter_ume_kit_dio_plus/src/widgets/pluggable_state.dart:232:72)<--这里出错
#1      MapBase.map (dart:collection/maps.dart:82:28)
#2      _ResponseCardState._requestHeadersBuilder (package:flutter_ume_kit_dio_plus/src/widgets/pluggable_state.dart:229:60)
#3      _ResponseCardState._detailedContent.<anonymous closure> (package:flutter_ume_kit_dio_plus/src/widgets/pluggable_state.dart:353:26)
#4      _ValueListenableBuilderState.build (package:flutter/src/widgets/value_listenable_builder.dart:186:26)
#5      StatefulElement.build (package:flutter/src/widgets/framework.dart:5198:27)
#6      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5086:15)
#7      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
#8      Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
#9      BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2780:19)
#10     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:903:21)
#11     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:358:5)
#12     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1284:15)
#13     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1214:9)
#14     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1072:5)
#15     _invoke (dart:ui/hooks.dart:142:13)
#16     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:359:5)
#17     _drawFrame (dart:ui/hooks.dart:112:31)

Environmental info 环境信息

Flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[!] Flutter (Channel stable, 3.10.5, on macOS 13.4.1 22F770820d darwin-arm64, locale en-CN)

UME and kits version UME 及插件包版本

  # ume调试工具
  flutter_ume: ^1.1.2
  flutter_ume_kit_ui: ^1.1.0 # 如果报错,可以修改widget_detail_inspector.dart第三行为 import 'package:flutter/material.dart' hide SearchBar;
  flutter_ume_kit_device: ^1.0.0
  flutter_ume_kit_console: ^1.0.0
  flutter_ume_kit_dio_plus: ^2.0.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions