// nodes_provider.dart — 节点清单 + 当前选择(含智能选择 AUTO) import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../models/node.dart'; /// 可用节点(演示数据;接口就绪后替换为 nodes API)。 final nodesProvider = Provider>((ref) => kDemoNodes); /// 当前选中的节点 code;`AUTO` 表示智能选择(默认)。 final selectedNodeCodeProvider = StateProvider((ref) => kSmartNodeCode); /// 是否处于智能选择。 final isSmartSelectProvider = Provider( (ref) => ref.watch(selectedNodeCodeProvider) == kSmartNodeCode, ); /// 实际生效的节点:智能选择时取延迟最小者,否则取选中节点。 final effectiveNodeProvider = Provider((ref) { final nodes = ref.watch(nodesProvider); final code = ref.watch(selectedNodeCodeProvider); if (code == kSmartNodeCode) { return nodes.reduce((a, b) => a.ping <= b.ping ? a : b); } return nodes.firstWhere((n) => n.code == code, orElse: () => nodes.first); });