180 lines
5.7 KiB
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(),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|