import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:okane/screen.dart';
import 'package:okane/ui/pages/budgets/add_budget.dart';
import 'package:okane/ui/pages/budgets/edit_budget.dart';
import 'package:okane/ui/state/core.dart';
import 'package:okane/ui/utils.dart';

class BudgetListPage extends StatelessWidget {
  const BudgetListPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        BlocBuilder<CoreCubit, CoreState>(
          builder: (context, state) {
            if (state.budgets.isEmpty) {
              return Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [Text("No budgets")],
              );
            }

            return ListView.builder(
              itemCount: state.budgets.length,
              itemBuilder:
                  (context, index) => ListTile(
                    title: Text(state.budgets[index].name),
                    selected: state.budgets[index] == state.activeBudget,
                    trailing: Row(
                      mainAxisSize: MainAxisSize.min,
                      children: [
                        IconButton(
                          icon: Icon(Icons.edit),
                          onPressed: () {
                            showDialogOrModal(
                              context: context,
                              builder:
                                  (_) => EditBudgetPopup(
                                    budget: state.budgets[index],
                                    onDone: () {
                                      Navigator.of(context).pop();
                                    },
                                  ),
                            );
                          },
                        ),
                        IconButton(
                          icon: Icon(Icons.delete, color: Colors.redAccent),
                          onPressed: () {
                            // TODO
                          },
                        ),
                      ],
                    ),
                    onTap: () {
                      GetIt.I.get<CoreCubit>().setActiveBudget(
                        state.budgets[index],
                      );
                      if (getScreenSize(context) == ScreenSize.small) {
                        Navigator.of(context).pushNamed("/budgets/details");
                      }
                    },
                  ),
            );
          },
        ),

        Positioned(
          right: 16,
          bottom: 16,
          child: FloatingActionButton(
            child: Icon(Icons.add),
            onPressed: () {
              showDialogOrModal(
                context: context,
                builder:
                    (_) => AddBudgetPopup(
                      onDone: () {
                        Navigator.of(context).pop();
                      },
                    ),
              );
            },
          ),
        ),
      ],
    );
  }
}