import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/views/notification/strings/notification_strings.dart';

class PageSelectionDialog extends StatefulWidget {
  final int totalPages;
  final int currentPage;

  const PageSelectionDialog({
    required this.totalPages,
    required this.currentPage,
    super.key,
  });

  @override
  State<PageSelectionDialog> createState() => _PageSelectionDialogState();
}

class _PageSelectionDialogState extends State<PageSelectionDialog> {
  late int selectedPage;

  @override
  void initState() {
    super.initState();
    selectedPage = widget.currentPage;
  }

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      backgroundColor: AppColors.backgroundColor,
      insetPadding: EdgeInsets.symmetric(
        horizontal: 16.0.w(),
        vertical: 16.0.h(),
      ),
      title: Text(
        '${NotificationStrings.selectPage} (Current: ${widget.currentPage})',
        style: TextStyle(
          fontSize: 16.0.sp(),
          fontWeight: FontWeight.w500,
          color: AppColors.grey80,
        ),
      ),
      content: SizedBox(
        width: 200,
        height: 300,
        child: ListView.builder(
          itemCount: widget.totalPages,
          itemBuilder: (context, index) {
            final pageNumber = index + 1;

            return ListTile(
              leading: Radio<int>(
                value: pageNumber,
                groupValue: selectedPage,
                activeColor: AppColors.mainBlue,
                onChanged: (value) {
                  setState(() {
                    selectedPage = value!;
                  });
                  context.pop(value);
                },
              ),
              title: Text(
                '$pageNumber',
                style: TextStyle(
                  fontSize: 16.0.sp(),
                  fontWeight: FontWeight.w500,
                  color: AppColors.grey80,
                ),
              ),
              onTap: () {
                setState(() {
                  selectedPage = pageNumber;
                });
                context.pop(pageNumber);
              },
            );
          },
        ),
      ),
    );
  }
}
