import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:pweb/providers/wallets.dart'; import 'package:pweb/widgets/error/snackbar.dart'; import 'package:pweb/generated/i18n/app_localizations.dart'; class WalletEditHeader extends StatefulWidget { const WalletEditHeader({super.key}); @override State createState() => _WalletEditHeaderState(); } class _WalletEditHeaderState extends State { bool _isEditing = false; late TextEditingController _controller; @override void initState() { super.initState(); _controller = TextEditingController(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { final provider = context.watch(); final wallet = provider.selectedWallet; final loc = AppLocalizations.of(context)!; if (wallet == null) { return SizedBox.shrink(); } final theme = Theme.of(context); if (!_isEditing) { _controller.text = wallet.name; } return Row( spacing: 8, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded( child: !_isEditing ? Row( children: [ Expanded( child: Text( wallet.name, style: theme.textTheme.headlineMedium!.copyWith( fontWeight: FontWeight.bold, ), ), ), IconButton( icon: const Icon(Icons.edit), onPressed: () { setState(() { _isEditing = true; }); }, ), ], ) : Row( children: [ Expanded( child: TextFormField( controller: _controller, decoration: InputDecoration( border: OutlineInputBorder(), isDense: true, hintText: loc.walletName, ), ), ), IconButton( icon: const Icon(Icons.check), color: theme.colorScheme.primary, onPressed: () async { await executeActionWithNotification( context: context, action: () async => await provider.updateWallet(wallet.copyWith(name: _controller.text)), errorMessage: loc.walletNameUpdateFailed, successMessage: loc.walletNameSaved, ); setState(() { _isEditing = false; }); }, ), IconButton( icon: const Icon(Icons.close), onPressed: () { _controller.text = wallet.name; setState(() { _isEditing = false; }); }, ), ], ), ), ], ); } }