import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:tunas/domains/account/account_bloc.dart'; import 'package:tunas/pages/transactions/widgets/transaction_form.dart'; import 'package:tunas/repositories/account/models/transaction.dart'; class TransactionAddDialog extends StatelessWidget { const TransactionAddDialog({super.key}); static void show(BuildContext context, Transaction? transaction) { context.read().add(TransactionSetCurrent(transaction)); showDialog( context: context, barrierDismissible: false, useRootNavigator: false, builder: (_) => BlocProvider.value( value: BlocProvider.of(context), child: const TransactionAddDialog() ) ); } static void hide(BuildContext context) => Navigator.pop(context); _computeActions(BuildContext context, Transaction? currentTransaction) { final actions = [ IconButton( onPressed: () => TransactionAddDialog.hide(context), icon: const Icon(Icons.close) ), IconButton( onPressed: () => context.read().add(const TransactionAdd()), icon: const Icon(Icons.save) ), ]; if (currentTransaction != null) { actions.add(IconButton( onPressed: () => context.read().add(const TransactionDeleteCurrent()), icon: const Icon(Icons.delete) )); } return actions; } @override Widget build(BuildContext context) { return BlocBuilder( buildWhen: (previous, current) => previous.currentTransaction != current.currentTransaction, builder: (context, state) => AlertDialog( title: Text(state.currentTransaction == null ? 'Add Transaction' : 'Edit Transaction'), actions: _computeActions(context, state.currentTransaction), content: const SizedBox( height: 400, child: TransactionForm(), ) ) ); } }