import 'package:flutter/material.dart'; import 'package:flutter_expandable_fab/flutter_expandable_fab.dart'; import '../../Controller/account_controller.dart'; /// Ein Floating Action Button, der beim Klicken ein expandierendes Menü öffnet, /// um neue Transaktionen oder Konten anzulegen. class FloatingCreationButton extends StatefulWidget { /// Erstellt eine neue Instanz dieser Klasse const FloatingCreationButton({super.key}); @override State createState() => _FloatingCreationButtonState(); } class _FloatingCreationButtonState extends State { final AccountController _accountController = AccountController(); @override Widget build(final BuildContext context) => ExpandableFab( openButtonBuilder: RotateFloatingActionButtonBuilder( child: const Icon(Icons.add), ), type: ExpandableFabType.up, childrenAnimation: ExpandableFabAnimation.none, distance: 70, children: [ _expandableButton( label: 'Neue Transaktion', icon: Icons.add, onPressed: () {}, ), _expandableButton( label: 'Neues Konto', icon: Icons.account_balance_wallet, onPressed: _accountController.newAccountHandler, ), ], ); Widget _expandableButton({ required final String label, required final IconData icon, required final VoidCallback onPressed, }) => GestureDetector( onTap: onPressed, child: Row( children: [ Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), decoration: BoxDecoration(borderRadius: BorderRadius.circular(8)), child: Text(label), ), const SizedBox(width: 12), FloatingActionButton.small( heroTag: null, onPressed: onPressed, child: Icon(icon), ), ], ), ); }