56 lines
1.7 KiB
Dart
56 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:pshared/models/payment/methods/card.dart';
|
|
import 'package:pshared/models/payment/methods/iban.dart';
|
|
import 'package:pshared/models/payment/methods/russian_bank.dart';
|
|
import 'package:pshared/models/payment/methods/wallet.dart';
|
|
import 'package:pshared/models/payment/type.dart';
|
|
|
|
import 'package:pweb/pages/payment_methods/add/card.dart';
|
|
import 'package:pweb/pages/payment_methods/add/iban.dart';
|
|
import 'package:pweb/pages/payment_methods/add/russian_bank.dart';
|
|
import 'package:pweb/pages/payment_methods/add/wallet.dart';
|
|
|
|
|
|
class PaymentMethodForm extends StatelessWidget {
|
|
final PaymentType? selectedType;
|
|
final ValueChanged<Object?> onChanged;
|
|
final Object? initialData;
|
|
final bool isEditable;
|
|
|
|
const PaymentMethodForm({
|
|
super.key,
|
|
required this.selectedType,
|
|
required this.onChanged,
|
|
this.initialData,
|
|
this.isEditable = true,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return switch (selectedType) {
|
|
PaymentType.card => CardFormMinimal(
|
|
onChanged: onChanged,
|
|
initialData: initialData as CardPaymentMethod?,
|
|
isEditable: isEditable,
|
|
),
|
|
PaymentType.iban => IbanForm(
|
|
onChanged: onChanged,
|
|
initialData: initialData as IbanPaymentMethod?,
|
|
isEditable: isEditable,
|
|
),
|
|
PaymentType.wallet => WalletForm(
|
|
onChanged: onChanged,
|
|
initialData: initialData as WalletPaymentMethod?,
|
|
isEditable: isEditable,
|
|
),
|
|
PaymentType.bankAccount => RussianBankForm(
|
|
onChanged: onChanged,
|
|
initialData: initialData as RussianBankAccountPaymentMethod?,
|
|
isEditable: isEditable,
|
|
),
|
|
_ => const SizedBox.shrink(),
|
|
};
|
|
}
|
|
}
|