// ignore_for_file: invalid_use_of_protected_member part of '../../registration_page.dart'; extension _RegistrationOverviewPart on _RegistrationPageState { /// Find all scanned items that are already on shelf. List _findOnShelfItemsInScanned() { return registration_calculations.findOnShelfItemsInScanned( overview: _overview, zongpaiNos: _zongpaiNos, ); } /// Find all scanned items that are already transferred. List _findTransferredItemsInScanned() { return registration_calculations.findTransferredItemsInScanned( overview: _overview, zongpaiNos: _zongpaiNos, ); } /// Whether any scanned item already has a location binding (on_shelf or transferred). bool _hasAnyLocatedInScanned() { return registration_calculations.hasAnyLocatedInScanned( overview: _overview, zongpaiNos: _zongpaiNos, ); } Future _baseUrl() async { final configService = AppConfigService(); final baseUrl = await configService.getString('api_url') ?? ''; if (baseUrl.isEmpty) { return null; } return baseUrl; } Future _loadOverview(String zongpaiNo, {bool force = false}) async { if (!force && _overviewZongpaiNo == zongpaiNo && _overview != null) { return; } final requestId = ++_overviewRequestId; setState(() { _overviewZongpaiNo = zongpaiNo; _overviewLoading = true; _overviewNotFound = false; _overviewError = null; }); final baseUrl = await _baseUrl(); if (!mounted || requestId != _overviewRequestId) return; if (baseUrl == null) { setState(() { _overviewLoading = false; _overviewError = '未配置 API 地址,请前往设置'; }); return; } final result = await _apiService.fetchPaichaOverview( baseUrl: baseUrl, zongpaiNo: zongpaiNo, ); if (!mounted || requestId != _overviewRequestId) return; setState(() { _overviewLoading = false; if (result.success) { _overview = result; _overviewNotFound = false; _overviewError = null; } else if (result.notFound) { _overview = null; _overviewNotFound = true; _overviewError = null; } else { _overviewError = result.errorMessage ?? '加载失败,点击重试'; } }); } Future _refreshCurrentOverview() async { final zongpaiNo = _overviewZongpaiNo; if (zongpaiNo == null) return; await _loadOverview(zongpaiNo, force: true); } }