POLISHING STUFF and Smarter AI, and alot i mean.. ALOT OF BUG FIX AND OPTIMIZE
This commit is contained in:
@@ -9,8 +9,11 @@ import 'package:shared_preferences/shared_preferences.dart';
|
||||
import '../../app/injection_container.dart';
|
||||
import '../../core/ai/detection_export.dart';
|
||||
import '../../core/constants/app_constants.dart';
|
||||
import '../../core/theme/app_colors.dart';
|
||||
import '../../core/theme/app_decorations.dart';
|
||||
import '../../core/services/tts_service.dart';
|
||||
import '../../core/utils/operation_guard.dart';
|
||||
import '../../shared/widgets/animations/animations.dart';
|
||||
import '../../shared/widgets/feature_page.dart';
|
||||
|
||||
class AiBenchmarkScreen extends StatefulWidget {
|
||||
@@ -116,18 +119,22 @@ class _AiBenchmarkScreenState extends State<AiBenchmarkScreen> {
|
||||
CameraController? controller;
|
||||
await guarded<void>(
|
||||
() async {
|
||||
final cameras =
|
||||
await availableCameras().timeout(const Duration(seconds: 3));
|
||||
if (cameras.isNotEmpty) {
|
||||
final activeController = CameraController(
|
||||
cameras.first,
|
||||
ResolutionPreset.low,
|
||||
enableAudio: false,
|
||||
);
|
||||
controller = activeController;
|
||||
await activeController.initialize().timeout(const Duration(seconds: 5));
|
||||
await activeController.takePicture().timeout(const Duration(seconds: 5));
|
||||
}
|
||||
final cameras =
|
||||
await availableCameras().timeout(const Duration(seconds: 3));
|
||||
if (cameras.isNotEmpty) {
|
||||
final activeController = CameraController(
|
||||
cameras.first,
|
||||
ResolutionPreset.low,
|
||||
enableAudio: false,
|
||||
);
|
||||
controller = activeController;
|
||||
await activeController
|
||||
.initialize()
|
||||
.timeout(const Duration(seconds: 5));
|
||||
await activeController
|
||||
.takePicture()
|
||||
.timeout(const Duration(seconds: 5));
|
||||
}
|
||||
},
|
||||
onError: (_) {},
|
||||
);
|
||||
@@ -198,7 +205,11 @@ class _AiBenchmarkScreenState extends State<AiBenchmarkScreen> {
|
||||
label: const Text('Clear log'),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
for (final run in _runs) _BenchmarkCard(run: run),
|
||||
StaggerWrapper(
|
||||
children: [
|
||||
for (final run in _runs) _BenchmarkCard(run: run),
|
||||
],
|
||||
),
|
||||
if (_runs.isEmpty)
|
||||
const FeatureEmptyPanel(
|
||||
icon: Icons.speed,
|
||||
@@ -224,9 +235,10 @@ class _BenchmarkCard extends StatelessWidget {
|
||||
margin: const EdgeInsets.only(bottom: 10),
|
||||
padding: const EdgeInsets.all(14),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
border: Border.all(color: const Color(0xFFE2E8F0)),
|
||||
color: AppColors.cardWhite,
|
||||
borderRadius: AppDecorations.cardRadius,
|
||||
border: Border.all(color: AppColors.border),
|
||||
boxShadow: AppDecorations.cardShadow,
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
@@ -262,7 +274,8 @@ class _StatusBox extends StatelessWidget {
|
||||
return DecoratedBox(
|
||||
decoration: BoxDecoration(
|
||||
color: success ? const Color(0xFFF0FDF4) : const Color(0xFFFEF2F2),
|
||||
borderRadius: BorderRadius.circular(14),
|
||||
borderRadius: AppDecorations.cardRadius,
|
||||
boxShadow: AppDecorations.cardShadow,
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(12),
|
||||
@@ -279,17 +292,17 @@ class _StatusBox extends StatelessWidget {
|
||||
|
||||
Future<List<String>> _discoverTfliteModels() async {
|
||||
return await guarded<List<String>>(
|
||||
() async {
|
||||
final manifestRaw = await rootBundle.loadString('AssetManifest.json');
|
||||
final manifest = jsonDecode(manifestRaw) as Map<String, dynamic>;
|
||||
final models = manifest.keys
|
||||
.where((key) =>
|
||||
key.startsWith('assets/models/') && key.endsWith('.tflite'))
|
||||
.toList()
|
||||
..sort();
|
||||
return models;
|
||||
},
|
||||
) ??
|
||||
() async {
|
||||
final manifestRaw = await rootBundle.loadString('AssetManifest.json');
|
||||
final manifest = jsonDecode(manifestRaw) as Map<String, dynamic>;
|
||||
final models = manifest.keys
|
||||
.where((key) =>
|
||||
key.startsWith('assets/models/') && key.endsWith('.tflite'))
|
||||
.toList()
|
||||
..sort();
|
||||
return models;
|
||||
},
|
||||
) ??
|
||||
const [];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user