修正切换订阅计划多节点列表展示问题
This commit is contained in:
@@ -26,12 +26,33 @@ class KRNodeList {
|
||||
return const KRNodeList(list: []);
|
||||
}
|
||||
|
||||
// 获取第一个订阅对象
|
||||
final subscribeData = listData[0] as Map<String, dynamic>;
|
||||
// 尝试找到与请求参数 id 匹配的订阅项
|
||||
// 如果 json 中有 subscribeId,则查找匹配项;否则使用第一个
|
||||
Map<String, dynamic>? subscribeData;
|
||||
|
||||
final String? requestSubscribeId = json['subscribeId']?.toString();
|
||||
if (requestSubscribeId != null && requestSubscribeId.isNotEmpty) {
|
||||
// 查找 id 匹配的订阅项
|
||||
try {
|
||||
subscribeData = listData.firstWhere(
|
||||
(item) => (item as Map<String, dynamic>)['id']?.toString() == requestSubscribeId,
|
||||
orElse: () => listData[0] as Map<String, dynamic>
|
||||
) as Map<String, dynamic>;
|
||||
KRLogUtil.kr_i('✅ 找到匹配的订阅项: id=$requestSubscribeId', tag: 'NodeList');
|
||||
} catch (e) {
|
||||
KRLogUtil.kr_w('⚠️ 未找到匹配的订阅项,使用第一个', tag: 'NodeList');
|
||||
subscribeData = listData[0] as Map<String, dynamic>;
|
||||
}
|
||||
} else {
|
||||
// 如果没有提供 subscribeId,使用第一个
|
||||
subscribeData = listData[0] as Map<String, dynamic>;
|
||||
}
|
||||
|
||||
final bool isTryOut = subscribeData['is_try_out'] as bool? ?? false;
|
||||
final List<dynamic>? nodesData = subscribeData['nodes'] as List<dynamic>?;
|
||||
|
||||
KRLogUtil.kr_i('节点列表解析: is_try_out=$isTryOut, 节点数=${nodesData?.length ?? 0}', tag: 'NodeList');
|
||||
KRLogUtil.kr_i('🔍 节点列表解析: subscribe_id=${subscribeData['id']}, is_try_out=$isTryOut, 节点数=${nodesData?.length ?? 0}', tag: 'NodeList');
|
||||
KRLogUtil.kr_i('📊 所有订阅项数量: ${listData.length}', tag: 'NodeList');
|
||||
|
||||
return KRNodeList(
|
||||
list: nodesData?.map((e) => KrNodeListItem.fromJson(e as Map<String, dynamic>)).toList() ?? [],
|
||||
|
||||
Reference in New Issue
Block a user