Isar part 2
Screens
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:task_manager/logic/task_cubit.dart';
import 'package:task_manager/model/task_model.dart';
import 'package:task_manager/ui%20/widgets/app_button.dart';
import 'package:task_manager/ui%20/widgets/date_picker_widget.dart';
import 'package:task_manager/ui%20/widgets/priority_widget.dart';
import 'package:task_manager/ui%20/widgets/text_input_field_widget.dart';
class AddScreen extends StatefulWidget {
const AddScreen({super.key});
@override
State<AddScreen> createState() => _AddScreenState();
}
class _AddScreenState extends State<AddScreen> {
TextEditingController titleController = TextEditingController();
TextEditingController descController = TextEditingController();
DateTime _selectedDateTime = DateTime.now();
int selectPriority = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
title: Text('Новая задача'),
),
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 15),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextInputFieldWidget(
label: 'Tilte',
hint: 'Добавьте название задачи',
controller: titleController,
),
SizedBox(height: 24),
TextInputFieldWidget(
label: 'Описание ',
hint: 'добавьте описание',
maxLines: 4,
controller: descController,
),
SizedBox(height: 24),
PriorityWidget(
selectPriority: selectPriority,
onTap: (int p1) {
setState(() {
selectPriority = p1;
});
},
),
SizedBox(height: 24),
DatePickerWidget(
onTap: () {
showDateDialog();
},
selectedDay: _selectedDateTime,
),
SizedBox(height: 48),
AppButton(
title: 'Добавить задачу',
onPressed: () {
submit();
},
),
],
),
),
);
}
void showDateDialog() async {
final picked = await showDatePicker(
context: context,
initialDate: _selectedDateTime,
firstDate: DateTime.now(),
lastDate: DateTime(2030),
);
if (picked != null) setState(() => _selectedDateTime = picked);
}
void submit() {
if (titleController.text.isEmpty) return;
final task = TaskModel(
title: titleController.text,
description: descController.text,
dueDate: _selectedDateTime,
priority: selectPriority,
categoryId: 'default',
createdAt: DateTime.now(),
);
print('задача добавлена');
context.read<TaskCubit>().addTask(taskModel: task);
Navigator.pop(context);
}
}Widgets
logic
Repositories
model
Last updated