import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:get_it/get_it.dart'; import 'package:okane/ui/pages/account/delete_account.dart'; import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/utils.dart'; class AccountSwitcher extends StatelessWidget { const AccountSwitcher({super.key}); @override Widget build(BuildContext context) { final bloc = GetIt.I.get(); return BlocBuilder( builder: (context, state) => InkWell( borderRadius: BorderRadius.circular(8), onTap: () { showDialogOrModal( context: context, builder: (context) => ListView.builder( shrinkWrap: true, itemCount: state.accounts.length, itemBuilder: (context, index) { final item = state.accounts[index]; return ListTile( title: Text(item.name!), trailing: IconButton( icon: Icon(Icons.delete), color: Colors.red, onPressed: () async { await showDialog( context: context, barrierDismissible: false, builder: (context) => DeleteAccountPopup( account: item, onCancel: () { Navigator.of(context).pop(); Navigator.of(context).pop(); }, afterDelete: () { Navigator.of(context).pop(); Navigator.of(context).pop(); }, ), ); }, ), onTap: () { GetIt.I.get().setActiveAccountIndex( index, ); Navigator.of(context).pop(); }, ); }, ), ); }, child: Padding( padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), child: Row( mainAxisSize: MainAxisSize.min, children: [ Text( bloc.activeAccount!.name!, style: Theme.of(context).textTheme.titleLarge, ), Icon(Icons.arrow_drop_down), ], ), ), ), ); } } class AccountIndicator extends StatelessWidget { final Widget? trailing; const AccountIndicator({super.key, this.trailing}); @override Widget build(BuildContext context) { return SizedBox( height: 50, child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), child: AccountSwitcher(), ), const Spacer(), if (trailing != null) trailing!, ], ), ); } }