fix: auto repair bugs #10

This commit is contained in:
repair-agent 2026-03-24 13:08:43 +08:00
parent 51164ae21a
commit e34b6f1527
4 changed files with 50 additions and 37 deletions

View File

@ -46,7 +46,11 @@ class BadgeTransferController extends _$BadgeTransferController {
void startScan() { void startScan() {
if (!ref.mounted) return; if (!ref.mounted) return;
state = state.copyWith(status: TransferStatus.scanning); state = state.copyWith(status: TransferStatus.scanning);
FlutterBluePlus.startScan(timeout: const Duration(seconds: 10)); FlutterBluePlus.startScan(timeout: const Duration(seconds: 10)).catchError((e) {
// Web : requestDevice()
if (!ref.mounted) return;
state = state.copyWith(status: TransferStatus.idle);
});
FlutterBluePlus.scanResults.listen((results) { FlutterBluePlus.scanResults.listen((results) {
if (!ref.mounted) return; if (!ref.mounted) return;

View File

@ -29,7 +29,6 @@ class _BadgeHomePageState extends ConsumerState<BadgeHomePage>
double _genProgress = 0; double _genProgress = 0;
String _genStatus = ''; String _genStatus = '';
String? _generatedImageUrl; String? _generatedImageUrl;
bool _hasAiResult = false;
@override @override
void initState() { void initState() {
@ -43,7 +42,6 @@ class _BadgeHomePageState extends ConsumerState<BadgeHomePage>
final pending = BadgeAiGenerationService.instance.consumePendingResult(); final pending = BadgeAiGenerationService.instance.consumePendingResult();
if (pending != null) { if (pending != null) {
_generatedImageUrl = pending.imageUrl; _generatedImageUrl = pending.imageUrl;
_hasAiResult = true;
} }
// AI // AI
@ -61,7 +59,6 @@ class _BadgeHomePageState extends ConsumerState<BadgeHomePage>
setState(() { setState(() {
_isGenerating = false; _isGenerating = false;
_generatedImageUrl = result.imageUrl; _generatedImageUrl = result.imageUrl;
_hasAiResult = true;
}); });
_showResultDialog(result.imageUrl); _showResultDialog(result.imageUrl);
} }
@ -213,7 +210,6 @@ class _BadgeHomePageState extends ConsumerState<BadgeHomePage>
setState(() { setState(() {
_isGenerating = true; _isGenerating = true;
_generatedImageUrl = null; _generatedImageUrl = null;
_hasAiResult = false;
_genProgress = 0; _genProgress = 0;
_genStatus = '正在连接 AI...'; _genStatus = '正在连接 AI...';
}); });
@ -242,7 +238,6 @@ class _BadgeHomePageState extends ConsumerState<BadgeHomePage>
void _handleRetry() { void _handleRetry() {
setState(() { setState(() {
_generatedImageUrl = null; _generatedImageUrl = null;
_hasAiResult = false;
}); });
} }
@ -420,9 +415,11 @@ class _BadgeHomePageState extends ConsumerState<BadgeHomePage>
Widget? buttonContent; Widget? buttonContent;
if (isAiTab) { if (isAiTab) {
// "开始生成" buttonContent = _buildGradientButton(
if (!_isGenerating && !_hasAiResult) { '开始生成',
buttonContent = _buildGradientButton('开始生成', () { _isGenerating
? null
: () {
final aiState = _aiTabKey.currentState; final aiState = _aiTabKey.currentState;
if (aiState == null) return; if (aiState == null) return;
final prompt = aiState.currentPrompt; final prompt = aiState.currentPrompt;
@ -443,8 +440,8 @@ class _BadgeHomePageState extends ConsumerState<BadgeHomePage>
imageBytes: aiState.referenceImageBytes, imageBytes: aiState.referenceImageBytes,
strength: aiState.strength, strength: aiState.strength,
); );
}); },
} );
} else if (isUploadTab) { } else if (isUploadTab) {
if (_uploadedImagePath != null) { if (_uploadedImagePath != null) {
buttonContent = _buildGradientButton('使用此图', _handleUseImage); buttonContent = _buildGradientButton('使用此图', _handleUseImage);
@ -474,7 +471,7 @@ class _BadgeHomePageState extends ConsumerState<BadgeHomePage>
); );
} }
Widget _buildGradientButton(String label, VoidCallback onPressed) { Widget _buildGradientButton(String label, VoidCallback? onPressed) {
return SizedBox( return SizedBox(
height: 52, height: 52,
child: DecoratedBox( child: DecoratedBox(

View File

@ -45,7 +45,10 @@ class _BadgeTransferPageState extends ConsumerState<BadgeTransferPage> {
} }
void _startScan() { void _startScan() {
FlutterBluePlus.startScan(timeout: const Duration(seconds: 10)); FlutterBluePlus.startScan(timeout: const Duration(seconds: 10)).catchError((e) {
// Web : requestDevice()
debugPrint('[Badge BLE] startScan 异常(用户可能取消了选择器): $e');
});
} }
@override @override

View File

@ -218,10 +218,19 @@ class _BluetoothPageState extends ConsumerState<BluetoothPage>
}); });
// _queryDeviceByMac // _queryDeviceByMac
try {
await FlutterBluePlus.startScan( await FlutterBluePlus.startScan(
timeout: const Duration(seconds: 30), timeout: const Duration(seconds: 30),
androidUsesFineLocation: true, androidUsesFineLocation: true,
); );
} catch (e) {
// Web : requestDevice() FlutterBluePlusException
debugPrint('[BLE Scan] startScan 异常(用户可能取消了选择器): $e');
if (mounted) {
setState(() => _isSearching = false);
}
return;
}
// 30 // 30
if (mounted && _isSearching) { if (mounted && _isSearching) {