import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_background_geolocation/flutter_background_geolocation.dart' as bg; import 'package:traccar_client/main.dart'; import 'config.dart'; import 'preferences.dart'; class SettingsScreen extends StatefulWidget { const SettingsScreen({super.key}); @override State createState() => _SettingsScreenState(); } class _SettingsScreenState extends State { bool trackingEnabled = false; @override void initState() { super.initState(); _initState(); } void _initState() async { final state = await bg.BackgroundGeolocation.state; setState(() { trackingEnabled = state.enabled; }); bg.BackgroundGeolocation.onEnabledChange((bool enabled) { setState(() { trackingEnabled = enabled; }); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Settings'), ), body: ListView( children: [ ListTile( title: const Text('Device ID'), subtitle: Text(Preferences.instance.getString(Preferences.id) ?? ''), enabled: false, ), SwitchListTile( title: const Text('Continuous Tracking'), value: trackingEnabled, onChanged: (bool value) async { if (value) { try { await bg.BackgroundGeolocation.start(); } on PlatformException catch (error) { messengerKey.currentState?.showSnackBar( SnackBar(content: Text(error.message ?? error.code)), ); } } else { bg.BackgroundGeolocation.stop(); } }, ), ListTile( title: const Text('Server'), subtitle: Text(AppConfig.serverUrl), enabled: false, ), ListTile( title: const Text('Location Accuracy'), subtitle: Text(AppConfig.accuracy), enabled: false, ), ListTile( title: const Text('Distance'), subtitle: Text(AppConfig.distanceFilter == 0 ? 'Disabled' : '${AppConfig.distanceFilter}'), enabled: false, ), ListTile( title: const Text('Interval'), subtitle: Text('${AppConfig.intervalSeconds} seconds'), enabled: false, ), ListTile( title: const Text('Stop Detection'), subtitle: Text(AppConfig.stopDetection ? 'Enabled' : 'Disabled'), enabled: false, ), ], ), ); } }