merge: integrate boxing module from remote with sound/vibration feedback
Merge remote boxing module (one2one, one2many, many2one modes) with local sound and vibration feedback feature. Migrate SharedPreferences to AppConfigService across all services including SoundService. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:pad_scanner/services/app_config_service.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:pad_scanner/services/api_service.dart';
|
||||
import 'package:pad_scanner/services/sound_service.dart';
|
||||
@@ -29,8 +29,8 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||
}
|
||||
|
||||
Future<void> _loadUrl() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final url = prefs.getString('api_url') ?? '';
|
||||
final configService = AppConfigService();
|
||||
final url = await configService.getString('api_url') ?? '';
|
||||
_controller.text = url;
|
||||
}
|
||||
|
||||
@@ -52,8 +52,8 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||
return;
|
||||
}
|
||||
setState(() => _saving = true);
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString('api_url', url);
|
||||
final configService = AppConfigService();
|
||||
await configService.setString('api_url', url);
|
||||
setState(() => _saving = false);
|
||||
if (mounted) {
|
||||
_showSnackBar('设置已保存');
|
||||
@@ -70,10 +70,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||
final ok = await _apiService.testConnection(url);
|
||||
setState(() => _testing = false);
|
||||
if (mounted) {
|
||||
_showSnackBar(
|
||||
ok ? '连接成功' : '连接失败,请检查地址和网络',
|
||||
isError: !ok,
|
||||
);
|
||||
_showSnackBar(ok ? '连接成功' : '连接失败,请检查地址和网络', isError: !ok);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user