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