/// Shared UI helpers for bank connect actions. library; import 'package:flutter/material.dart'; import '../providers/bank_provider.dart'; import '../screens/bank_auth_screen.dart'; Future runConnectBank(BuildContext context, BankController bank) async { final start = await bank.beginConnect(); if (!context.mounted) return; if (start == null) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(bank.error ?? 'Could not start bank connect')), ); return; } final result = await Navigator.of(context).push( MaterialPageRoute( builder: (_) => BankAuthScreen( authUrl: start.authUrl, pendingState: start.state, ), ), ); if (!context.mounted) return; if (result == null) return; if (result.error != null && result.error!.isNotEmpty) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('Bank auth failed: ${result.error}')), ); return; } if (!result.hasCode) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Bank redirect missing code')), ); return; } final linked = await bank.completeWithCode( code: result.code!, state: result.state, ); if (!context.mounted) return; ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( linked ? 'Bank linked' : (bank.error ?? 'Could not complete connect'), ), ), ); }