import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:tm_app/core/constants/assets.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';
import 'package:tm_app/views/shared/page_selection_dialog.dart';
import 'package:tm_app/views/shared/desktop_navigation_widget.dart';

import '../../shared/main_tab_bar.dart';
import '../widgets/notification_all_tab.dart';
import '../widgets/notification_important_tab.dart';
import '../widgets/notification_unread_tab.dart';

class DesktopNotificationPage extends StatefulWidget {
  const DesktopNotificationPage({super.key});

  @override
  State<DesktopNotificationPage> createState() =>
      _DesktopNotificationPageState();
}

class _DesktopNotificationPageState extends State<DesktopNotificationPage>
    with SingleTickerProviderStateMixin {
  late TabController controller;

  @override
  void initState() {
    super.initState();
    controller = TabController(length: 3, vsync: this);
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: AppColors.backgroundColor,
      body: Column(
        children: [
          const DesktopNavigationWidget(currentIndex: 3),

          SizedBox(height: 60.0.h()),

          Expanded(
            child: Center(
              child: SizedBox(
                width: 740,
                child: Column(
                  children: [
                    MainTabBar(
                      controller: controller,
                      titles: [
                        NotificationStrings.all,
                        NotificationStrings.unread,
                        NotificationStrings.important,
                      ],
                    ),

                    SizedBox(height: 12.0.h()),

                    Padding(
                      padding: EdgeInsetsDirectional.only(end: 24.0.w()),
                      child: Align(
                        alignment: Alignment.centerRight,
                        child: InkWell(
                          onTap: () {},
                          borderRadius: BorderRadius.circular(99),
                          child: Container(
                            width: 132.0.w(),
                            height: 32.0.h(),
                            decoration: BoxDecoration(
                              color: AppColors.primary20,
                              borderRadius: BorderRadius.circular(99),
                            ),
                            child: Center(
                              child: Text(
                                NotificationStrings.markAllAsReadButton,
                                style: TextStyle(
                                  fontSize: 14.0.sp(),
                                  fontWeight: FontWeight.w500,
                                  color: AppColors.mainBlue,
                                ),
                              ),
                            ),
                          ),
                        ),
                      ),
                    ),
                    SizedBox(height: 12.0.h()),
                    Expanded(
                      child: TabBarView(
                        controller: controller,
                        children: const [
                          NotificationAllTab(),
                          NotificationUnreadTab(),
                          NotificationImportantTab(),
                        ],
                      ),
                    ),
                    SizedBox(height: 10.0.h()),
                    Row(
                      children: [
                        const Spacer(),
                        Text(
                          NotificationStrings.page,
                          style: TextStyle(
                            fontSize: 13.0.sp(),
                            fontWeight: FontWeight.w300,
                            color: AppColors.grey60,
                          ),
                        ),
                        SizedBox(width: 10.0.w()),
                        InkWell(
                          onTap: () async {
                            final selectedPage = await showDialog<int>(
                              context: context,
                              builder:
                                  (context) =>
                                      const PageSelectionDialog(totalPages: 10),
                            );

                            if (selectedPage != null) {}
                          },

                          child: Container(
                            decoration: BoxDecoration(
                              border: Border.all(
                                color: AppColors.grey30,
                                width: 1,
                              ),
                              borderRadius: BorderRadius.circular(4),
                            ),
                            child: Row(
                              children: [
                                SizedBox(width: 5.0.w()),
                                Text(
                                  NotificationStrings.currentPage,
                                  style: TextStyle(
                                    fontSize: 14.0.sp(),
                                    fontWeight: FontWeight.w500,
                                    color: AppColors.grey70,
                                  ),
                                ),
                                SizedBox(width: 5.0.w()),
                                SvgPicture.asset(
                                  AssetsManager.arrowDownSmall,
                                  colorFilter: ColorFilter.mode(
                                    AppColors.grey80,
                                    BlendMode.srcIn,
                                  ),
                                ),
                                SizedBox(width: 5.0.w()),
                              ],
                            ),
                          ),
                        ),
                        SizedBox(width: 5.0.w()),
                        Text(
                          NotificationStrings.of,
                          style: TextStyle(
                            fontSize: 14.0.sp(),
                            fontWeight: FontWeight.w400,
                            color: AppColors.grey60,
                          ),
                        ),
                        SizedBox(width: 5.0.w()),
                        Text(
                          NotificationStrings.totalPages,
                          style: TextStyle(
                            fontSize: 13.0.sp(),
                            fontWeight: FontWeight.w400,
                            color: AppColors.grey60,
                          ),
                        ),
                      ],
                    ),

                    SizedBox(height: 30.0.h()),
                  ],
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}
