Add days widget
This commit is contained in:
parent
0a7675797b
commit
4e2ca56a69
53
lib/days.dart
Normal file
53
lib/days.dart
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class Days extends StatefulWidget {
|
||||||
|
final ValueChanged<String> onChanged;
|
||||||
|
|
||||||
|
const Days({required this.onChanged, super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
createState() => _DaysState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _DaysState extends State<Days> {
|
||||||
|
final List<bool> _selections = List.generate(7, (_) => false);
|
||||||
|
final List<String> _days = [
|
||||||
|
'Monday',
|
||||||
|
'Tuesday',
|
||||||
|
'Wednesday',
|
||||||
|
'Thursday',
|
||||||
|
'Friday',
|
||||||
|
'Saturday',
|
||||||
|
'Sunday'
|
||||||
|
];
|
||||||
|
|
||||||
|
String _getSelectedDaysString() {
|
||||||
|
List<String> selectedDays = [];
|
||||||
|
for (int i = 0; i < _selections.length; i++) {
|
||||||
|
if (_selections[i]) {
|
||||||
|
selectedDays.add(_days[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return selectedDays.join(",");
|
||||||
|
}
|
||||||
|
|
||||||
|
void _updateSelections(int index) {
|
||||||
|
setState(() {
|
||||||
|
_selections[index] = !_selections[index];
|
||||||
|
widget.onChanged(_getSelectedDaysString());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Column(
|
||||||
|
children: List.generate(7, (index) {
|
||||||
|
return SwitchListTile(
|
||||||
|
title: Text(_days[index]),
|
||||||
|
value: _selections[index],
|
||||||
|
onChanged: (value) => _updateSelections(index),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/material.dart' as material;
|
import 'package:flutter/material.dart' as material;
|
||||||
import 'package:fmassive/database.dart';
|
import 'package:fmassive/database.dart';
|
||||||
|
import 'package:fmassive/days.dart';
|
||||||
import 'package:fmassive/main.dart';
|
import 'package:fmassive/main.dart';
|
||||||
import 'package:moor_flutter/moor_flutter.dart';
|
import 'package:moor_flutter/moor_flutter.dart';
|
||||||
|
|
||||||
|
@ -59,20 +60,11 @@ class _EditPlanPageState extends State<EditPlanPage> {
|
||||||
child: material.Column(
|
child: material.Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
TextFormField(
|
Days(onChanged: (days) {
|
||||||
controller: _daysController,
|
|
||||||
focusNode: daysNode,
|
|
||||||
decoration: const InputDecoration(labelText: 'Days'),
|
|
||||||
onTap: () {
|
|
||||||
_daysController.selection = TextSelection(
|
|
||||||
baseOffset: 0, extentOffset: _daysController.text.length);
|
|
||||||
},
|
|
||||||
onChanged: (value) {
|
|
||||||
setState(() {
|
setState(() {
|
||||||
plan = plan.copyWith(days: Value(value));
|
days = days;
|
||||||
});
|
});
|
||||||
},
|
}),
|
||||||
),
|
|
||||||
TextFormField(
|
TextFormField(
|
||||||
controller: _workoutsController,
|
controller: _workoutsController,
|
||||||
focusNode: workoutsNode,
|
focusNode: workoutsNode,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user