fooder-app/lib/screens/add_meal.dart

81 lines
1.9 KiB
Dart
Raw Normal View History

2023-07-30 14:40:45 +02:00
import 'package:flutter/material.dart';
2023-07-30 15:31:36 +02:00
import 'package:fooder/screens/based.dart';
import 'package:fooder/models/diary.dart';
2023-07-30 14:40:45 +02:00
class AddMealScreen extends BasedScreen {
final Diary diary;
2023-08-28 14:45:32 +02:00
const AddMealScreen(
{super.key, required super.apiClient, required this.diary});
2023-07-30 14:40:45 +02:00
@override
State<AddMealScreen> createState() => _AddMealScreen();
}
class _AddMealScreen extends State<AddMealScreen> {
final nameController = TextEditingController();
2023-07-30 14:42:55 +02:00
@override
2023-08-28 14:45:32 +02:00
void initState() {
2023-07-30 14:42:55 +02:00
super.initState();
setState(() {
nameController.text = "Meal ${widget.diary.meals.length}";
});
}
2023-07-30 14:40:45 +02:00
@override
void dispose() {
nameController.dispose();
super.dispose();
}
void popMeDaddy() {
2023-07-30 14:40:45 +02:00
Navigator.pop(
context,
);
}
2023-08-28 14:45:32 +02:00
void showError(String message) {
2023-07-30 14:40:45 +02:00
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(message, textAlign: TextAlign.center),
backgroundColor: Theme.of(context).colorScheme.error,
),
);
}
Future<void> _addMeal() async {
await widget.apiClient.addMeal(
name: nameController.text,
diaryId: widget.diary.id,
order: widget.diary.meals.length,
);
popMeDaddy();
2023-07-30 14:40:45 +02:00
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
2023-10-27 13:48:45 +02:00
title: Text("🅵🅾🅾🅳🅴🆁", style: logoStyle(context)),
2023-07-30 14:40:45 +02:00
),
body: Center(
2023-08-28 14:45:32 +02:00
child: Container(
constraints: const BoxConstraints(maxWidth: 720),
padding: const EdgeInsets.all(10),
child: TextFormField(
decoration: const InputDecoration(
labelText: 'Meal name',
),
controller: nameController,
2023-07-30 14:40:45 +02:00
),
2023-08-28 14:45:32 +02:00
)),
2023-07-30 14:40:45 +02:00
floatingActionButton: FloatingActionButton(
onPressed: _addMeal,
child: const Icon(Icons.add),
),
);
}
}