Preview:
import 'package:flutter/material.dart';
import 'package:task_manager_app/screens/task.dart';


Future<Task02?> showTaskDialog({
  required BuildContext context,
  Task02? existingTask,
}) async {
  final TextEditingController titleController =
      TextEditingController(text: existingTask?.title ?? '');
  final TextEditingController descController =
      TextEditingController(text: existingTask?.description ?? '');

  return showDialog<Task02>(
    context: context,
    builder: (context) {
      return AlertDialog(
        title: Text(existingTask == null ? "افزودن وظیفه جدید" : "ویرایش وظیفه"),
        content: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            TextField(
              controller: titleController,
              decoration: const InputDecoration(
                border: OutlineInputBorder(),
                labelText: 'عنوان',
              ),
            ),
            const SizedBox(height: 12),
            TextField(
              controller: descController,
              maxLines: 3,
              decoration: const InputDecoration(
                border: OutlineInputBorder(),
                labelText: 'جزئیات',
              ),
            ),
          ],
        ),
        actions: [
          TextButton(
            onPressed: () => Navigator.pop(context),
            child: const Text("انصراف"),
          ),
          ElevatedButton(
            onPressed: () {
              if (titleController.text.trim().isEmpty) {
                ScaffoldMessenger.of(context).showSnackBar(
                  const SnackBar(content: Text("عنوان نمی‌تواند خالی باشد 🚫")),
                );
                return;
              }

              final task = Task02(
                title: titleController.text.trim(),
                description: descController.text.trim(),
                isDone: existingTask?.isDone ?? false,
              );

              Navigator.pop(context, task);
            },
            child: const Text("ذخیره"),
          ),
        ],
      );
    },
  );
}
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter