trcr/lib/settings_screen.dart
2026-03-06 12:32:44 +11:00

96 lines
2.7 KiB
Dart

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<SettingsScreen> createState() => _SettingsScreenState();
}
class _SettingsScreenState extends State<SettingsScreen> {
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,
),
],
),
);
}
}