feat: use shifter trainer scan flow

This commit is contained in:
2026-04-28 21:31:52 +02:00
parent be1c39d5d7
commit 5285c44173
2 changed files with 265 additions and 234 deletions

View File

@ -10,8 +10,6 @@ import 'package:abawo_bt_app/util/bluetooth_settings.dart';
import 'package:abawo_bt_app/widgets/bike_scan_dialog.dart';
import 'package:abawo_bt_app/widgets/gear_ratio_editor_card.dart';
import 'package:flutter/material.dart';
import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'
show DiscoveredDevice;
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:nb_utils/nb_utils.dart';
@ -438,20 +436,6 @@ class _DeviceDetailsPageState extends ConsumerState<DeviceDetailsPage> {
return;
}
_isAssignTrainerDialogOpen = true;
final DiscoveredDevice? selectedBike;
try {
selectedBike = await BikeScanDialog.show(
context,
excludedDeviceId: widget.deviceAddress,
);
} finally {
_isAssignTrainerDialogOpen = false;
}
if (selectedBike == null || !mounted) {
return;
}
await _startStatusStreamingIfNeeded();
final shifter = _shifterService;
if (shifter == null) {
@ -463,8 +447,26 @@ class _DeviceDetailsPageState extends ConsumerState<DeviceDetailsPage> {
);
return;
}
if (!mounted) {
return;
}
final result = await shifter.connectButtonToBike(selectedBike.id);
_isAssignTrainerDialogOpen = true;
final TrainerScanResult? selectedTrainer;
try {
selectedTrainer = await BikeScanDialog.show(
context,
shifter: shifter,
);
} finally {
_isAssignTrainerDialogOpen = false;
}
if (selectedTrainer == null || !mounted) {
return;
}
final result =
await shifter.connectButtonToTrainer(selectedTrainer.address);
if (!mounted) {
return;
}
@ -479,7 +481,13 @@ class _DeviceDetailsPageState extends ConsumerState<DeviceDetailsPage> {
}
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Sent connect request for ${selectedBike.id}.')),
SnackBar(
content: Text(
selectedTrainer.name.isEmpty
? 'Sent connect request for trainer.'
: 'Sent connect request for ${selectedTrainer.name}.',
),
),
);
}