BankPotContributionSheet class

Manual add-to-pot or withdraw-from-pot flow.

Presents a large amount display, an inline number pad, real-time validation, and a confirm button that triggers the supplied onConfirm callback. Shows a loading spinner while awaiting the async callback.

Use BankPotContributionSheet.show to display the sheet as a modal bottom sheet.

Inheritance

Constructors

BankPotContributionSheet({required SavingsPot pot, required Future<void> onConfirm(Money amount), Key? key, bool isWithdrawal = false, Money? availableBalance, VoidCallback? onCancel, String addTitleTemplate = 'Add to {pot}', String withdrawTitleTemplate = 'Withdraw from {pot}', String closeTooltip = 'Close', String maxContributionTemplate = 'Maximum contribution is {amount} to reach your goal', String maxWithdrawalTemplate = 'You can withdraw at most {amount}', String maxAvailableTemplate = 'Cannot exceed available balance of {amount}', String availableTemplate = 'Available: {amount}', String goalSavedTemplate = 'Goal: {target} · Saved: {saved}', String addButtonLabel = 'Add money', String withdrawButtonLabel = 'Withdraw', String confirmContributionSemanticLabel = 'Confirm contribution', String confirmWithdrawalSemanticLabel = 'Confirm withdrawal', String invalidAmountSemanticLabel = 'Enter a valid amount to continue', String decimalKeySemanticLabel = 'Decimal point', String deleteKeySemanticLabel = 'Delete', BorderRadius? radius, Color? backgroundColor, Color? accentColor, TextStyle? titleStyle, TextStyle? amountStyle, IconData? closeIcon, IconData? deleteKeyIcon, Duration? animationDuration, Curve? animationCurve})
const

Properties

accentColor → Color?
Overrides the confirm button and keypad splash accent. Defaults to the theme primary colour.
final
addButtonLabel → String
Caption of the confirm button in contribution mode. Defaults to 'Add money'.
final
addTitleTemplate → String
Contribution title template; {pot} is substituted. Defaults to 'Add to {pot}'.
final
amountStyle → TextStyle?
Merged over the computed amount display numeral style.
final
animationCurve → Curve?
Overrides the error reveal curve. Defaults to BankTokens.curveStandard.
final
animationDuration → Duration?
Overrides the error reveal duration. Defaults to BankTokens.durationFast.
final
availableBalance → Money?
Maximum available balance for withdrawals (e.g. the pot's current balance or the main account balance). null means uncapped.
final
availableTemplate → String
Withdrawal subtitle template; {amount} is substituted. Defaults to 'Available: {amount}'.
final
backgroundColor → Color?
Overrides the sheet fill colour. Defaults to the theme surface.
final
closeIcon → IconData?
Overrides the close button glyph. Defaults to Icons.close.
final
closeTooltip → String
Tooltip on the close button. Defaults to 'Close'.
final
confirmContributionSemanticLabel → String
Confirm button semantics in contribution mode. Defaults to 'Confirm contribution'.
final
confirmWithdrawalSemanticLabel → String
Confirm button semantics in withdrawal mode. Defaults to 'Confirm withdrawal'.
final
decimalKeySemanticLabel → String
Semantics of the keypad decimal key. Defaults to 'Decimal point'.
final
deleteKeyIcon → IconData?
Overrides the keypad delete glyph. Defaults to Icons.backspace_outlined.
final
deleteKeySemanticLabel → String
Semantics of the keypad delete key. Defaults to 'Delete'.
final
goalSavedTemplate → String
Contribution subtitle template; {target} and {saved} are substituted. Defaults to 'Goal: {target} · Saved: {saved}'.
final
hashCode → int
The hash code for this object.
no setterinherited
invalidAmountSemanticLabel → String
Confirm button semantics while the amount is invalid. Defaults to 'Enter a valid amount to continue'.
final
isWithdrawal → bool
When true, the sheet is in withdrawal mode; otherwise contribution mode.
final
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
maxAvailableTemplate → String
Over-available-balance error template; {amount} is substituted. Defaults to 'Cannot exceed available balance of {amount}'.
final
maxContributionTemplate → String
Over-target error template; {amount} is substituted. Defaults to 'Maximum contribution is {amount} to reach your goal'.
final
maxWithdrawalTemplate → String
Over-balance withdrawal error template; {amount} is substituted. Defaults to 'You can withdraw at most {amount}'.
final
onCancel → VoidCallback?
Called when the user cancels. When null, only the back gesture closes the sheet.
final
onConfirm → Future<void> Function(Money amount)
Called with the confirmed Money amount. May be async; a loading state is shown while it completes.
final
pot → SavingsPot
The target savings pot.
final
radius → BorderRadius?
Overrides the sheet corner radius. Defaults to the theme sheetRadius.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
titleStyle → TextStyle?
Merged over the computed title style (BankTokens.headlineSmall in onSurface).
final
withdrawButtonLabel → String
Caption of the confirm button in withdrawal mode. Defaults to 'Withdraw'.
final
withdrawTitleTemplate → String
Withdrawal title template; {pot} is substituted. Defaults to 'Withdraw from {pot}'.
final

Methods

createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<BankPotContributionSheet>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() → List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) → String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String
Returns a one-line detailed description of the object.
inherited
toStringShort() → String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

show(BuildContext context, {required SavingsPot pot, required Future<void> onConfirm(Money amount), bool isWithdrawal = false, Money? availableBalance, VoidCallback? onCancel}) → Future<void>
Convenience helper to push the sheet as a modal bottom sheet.