feat: redesign and lots of progress

This commit is contained in:
2026-04-26 22:43:22 +02:00
parent 16ac66471a
commit 82ea8125e1
24 changed files with 1095 additions and 1315 deletions

View File

@ -3,6 +3,7 @@ import 'dart:io';
import 'package:abawo_bt_app/controller/bluetooth.dart';
import 'package:abawo_bt_app/database/database.dart';
import 'package:abawo_bt_app/model/bluetooth_device_model.dart';
import 'package:abawo_bt_app/util/bluetooth_settings.dart';
import 'package:abawo_bt_app/util/constants.dart';
import 'package:abawo_bt_app/widgets/horizontal_scanning_animation.dart';
import 'package:anyhow/anyhow.dart';
@ -63,9 +64,8 @@ class _ConnectDevicePageState extends ConsumerState<ConnectDevicePage> {
return;
}
final isAbawoDevice = isAbawoDeviceIdent(device.manufacturerData);
final isConnectable =
device.serviceUuids.any(isConnectableAbawoDeviceGuid);
final isAbawoDevice = device.serviceUuids.any(isAbawoDeviceGuid);
final isConnectable = device.serviceUuids.any(isConnectableAbawoDeviceGuid);
if (!isAbawoDevice) {
ScaffoldMessenger.of(context).showSnackBar(
@ -122,13 +122,18 @@ class _ConnectDevicePageState extends ConsumerState<ConnectDevicePage> {
),
);
} else {
context.push('/device/${device.id}');
context.go('/device/${device.id}');
}
break;
case Err(:final v):
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Connection unsuccessful:\n${v.toString()}')),
);
final error = v.toString();
if (error.toLowerCase().contains('disconnected')) {
await showBluetoothPairingRecoveryDialog(context);
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Connection unsuccessful:\n$error')),
);
}
break;
}
}
@ -224,7 +229,8 @@ class _ConnectDevicePageState extends ConsumerState<ConnectDevicePage> {
.toSet();
return btAsyncValue.when(
loading: () => const Center(child: CircularProgressIndicator()),
loading: () =>
const Center(child: CircularProgressIndicator()),
error: (err, stack) => Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: _ScanMessageCard(
@ -275,15 +281,16 @@ class _ConnectDevicePageState extends ConsumerState<ConnectDevicePage> {
return ListView.separated(
padding: const EdgeInsets.fromLTRB(20, 0, 20, 12),
itemCount: filteredResults.length,
separatorBuilder: (_, __) => const SizedBox(height: 12),
separatorBuilder: (_, __) =>
const SizedBox(height: 12),
itemBuilder: (context, index) {
final device = filteredResults[index];
final isAlreadyConnected =
connectedDeviceAddresses.contains(device.id);
final tone = _ScanResultTone.resolve(
isAlreadyConnected: isAlreadyConnected,
isAbawoDevice:
isAbawoDeviceIdent(device.manufacturerData),
isAbawoDevice: hasConnectableAbawoDeviceGuid(
device.serviceUuids),
isConnectable: device.serviceUuids
.any(isConnectableAbawoDeviceGuid),
);