laserscouter/lib/notespage.dart

180 lines
5.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class NotesPage extends StatefulWidget {
final String teamCode;
final String eventCode;
final String teamName;
const NotesPage({
super.key,
required this.teamCode,
required this.teamName,
required this.eventCode,
});
@override
State<NotesPage> createState() => _NotesPageState();
}
class _NotesPageState extends State<NotesPage> {
final TextEditingController _checkboxes = TextEditingController();
final TextEditingController _controller2 = TextEditingController();
final TextEditingController _switchvalue = TextEditingController();
double _slidervalue = 0.0;
@override
void initState() {
super.initState();
_loadNotes();
}
@override
void dispose() {
_saveNotes();
_checkboxes.dispose();
_controller2.dispose();
_switchvalue.dispose();
super.dispose();
}
Future<void> _loadNotes() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
if (mounted) {
setState(() {
_checkboxes.text =
prefs.getString('${widget.teamCode}_${widget.eventCode}_note1') ?? '';
_controller2.text =
prefs.getString('${widget.teamCode}_${widget.eventCode}_note2') ?? '';
_switchvalue.text =
prefs.getString('${widget.teamCode}_${widget.eventCode}_note3') ?? '';
_slidervalue = double.tryParse(prefs
.getString('${widget.teamCode}_${widget.eventCode}_note4') ??
'0.0') ?? 0.0;
});
}
}
Future<void> _saveNotes() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString(
'${widget.teamCode}_${widget.eventCode}_note1', _checkboxes.text);
await prefs.setString(
'${widget.teamCode}_${widget.eventCode}_note2', _controller2.text);
await prefs.setString(
'${widget.teamCode}_${widget.eventCode}_note3', _switchvalue.text);
await prefs.setString(
'${widget.teamCode}_${widget.eventCode}_note4', _slidervalue.toString());
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Notes'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: ListView(
children: [
Text(widget.teamName, style: Theme.of(context).textTheme.titleLarge, textAlign: TextAlign.center),
Text('Bot Starting Position',
style: Theme.of(context).textTheme.titleMedium),
CheckboxListTile(
title: const Text('Left'),
value: _checkboxes.text.contains('Left'),
onChanged: (bool? value) {
setState(() {
if (value == true) {
_checkboxes.text += 'Left ';
} else {
_checkboxes.text =
_checkboxes.text.replaceAll('Left ', '');
}
_saveNotes();
});
},
),
CheckboxListTile(
title: const Text('Mid'),
value: _checkboxes.text.contains('Mid'),
onChanged: (bool? value) {
setState(() {
if (value == true) {
_checkboxes.text += 'Mid ';
} else {
_checkboxes.text = _checkboxes.text.replaceAll('Mid ', '');
}
_saveNotes();
});
},
),
CheckboxListTile(
title: const Text('Right'),
value: _checkboxes.text.contains('Right'),
onChanged: (bool? value) {
setState(() {
if (value == true) {
_checkboxes.text += 'Right ';
} else {
_checkboxes.text =
_checkboxes.text.replaceAll('Right ', '');
}
_saveNotes();
});
},
),
const Divider(),
TextField(
controller: _controller2,
decoration: const InputDecoration(labelText: 'Auton Rundown'),
maxLines: null,
keyboardType: TextInputType.multiline,
onChanged: (text) => _saveNotes(),
),
const Divider(),
CheckboxListTile(
title: const Text('Can Score Algae'),
value: _switchvalue.text.contains('Can Score Algae'),
onChanged: (bool? value) {
setState(() {
_switchvalue.text =
value == true ? 'Can Score Algae' : '';
_saveNotes();
});
},
),
CheckboxListTile(
title: const Text('Cannot Score Algae'),
value: _switchvalue.text.contains('Cannot Score Algae'),
onChanged: (bool? value) {
setState(() {
_switchvalue.text =
value == true ? 'Cannot Score Algae' : '';
_saveNotes();
});
},
),
const Divider(),
Text('Coral Level', style: Theme.of(context).textTheme.titleMedium),
Slider(
value: _slidervalue,
onChanged: (double value) {
setState(() {
_slidervalue = value;
});
},
onChangeEnd: (double value) {
_saveNotes();
},
min: 0,
max: 3,
divisions: 3,
label: _slidervalue.round().toString(),
),
],
),
),
);
}
}