fix: auto repair bugs #10
This commit is contained in:
parent
51164ae21a
commit
e34b6f1527
@ -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;
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user