import 'package:dropdown_search/dropdown_search.dart'; import 'package:flutter/material.dart'; import '../../Controller/account_controller.dart'; import '../../Entities/drift_database.dart'; /// Ein Dropdown, mit welchem man das Konto auswählen kann class AccountSelect extends StatefulWidget { /// Erstellt eine neue Instanz dieser Klasse const AccountSelect({super.key}); @override State createState() => _AccountSelectState(); } class _AccountSelectState extends State { final AccountController _accountController = AccountController(); @override Widget build(final BuildContext context) { final Future selected = _accountController.selected; return FutureBuilder( future: selected, builder: (final BuildContext context, final AsyncSnapshot snapshot) { if (snapshot.hasData) { return DropdownSearch( items: (final f, final cs) => _accountController.getAccounts(), selectedItem: snapshot.data, onChanged: (final Account? account) { if (account != null) { _accountController.selected = account; } }, itemAsString: (final Account account) => account.name, compareFn: (final Account a1, final Account a2) => a1.id == a2.id, popupProps: const PopupProps.menu( showSearchBox: true, searchFieldProps: TextFieldProps( decoration: InputDecoration( hintText: 'Konto suchen...', contentPadding: EdgeInsets.symmetric( horizontal: 12, vertical: 8, ), ), ), ), ); } else if (snapshot.hasError) { return const Row( children: [ Icon(Icons.error, color: Colors.red), Text('Fehler beim Laden der Konten!'), ], ); } else { return const CircularProgressIndicator(); } }, ); } }