import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:pweb/providers/wallets.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; 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: const InputDecoration( border: OutlineInputBorder(), isDense: true, hintText: 'Wallet name', ), ), ), IconButton( icon: const Icon(Icons.check), color: theme.colorScheme.primary, onPressed: () async { provider.updateName(wallet.id, _controller.text); await provider.updateWallet(wallet.copyWith(name: _controller.text)); ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Wallet name saved')), ); setState(() { _isEditing = false; }); }, ), IconButton( icon: const Icon(Icons.close), onPressed: () { _controller.text = wallet.name; setState(() { _isEditing = false; }); }, ), ], ), ), ], ); } }