pay_form.dart 7.26 KiB
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../data/models/payment_cubit.dart';
import '../../../data/models/payment_state.dart';
import '../../../data/models/transaction_cubit.dart';
import '../../logger.dart';
import '../../pay_helper.dart';
import '../../tutorial_keys.dart';
import '../../ui_helpers.dart';
import '../connectivity_widget_wrapper_wrapper.dart';
import 'g1_textfield.dart';
class PayForm extends StatefulWidget {
const PayForm({super.key});
@override
State<PayForm> createState() => _PayFormState();
}
class _PayFormState extends State<PayForm> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<FormFieldState<String>> _formCommentKey =
GlobalKey<FormFieldState<String>>();
final TextEditingController _commentController = TextEditingController();
final ValueNotifier<String> _feedbackNotifier = ValueNotifier<String>('');
@override
void dispose() {
_commentController.dispose();
_feedbackNotifier.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BlocBuilder<PaymentCubit, PaymentState>(
builder: (BuildContext context, PaymentState state) {
if (state.comment != null && _commentController.text != state.comment) {
_commentController.text = state.comment;
}
if (state.amount == null || state.amount == 0) {
_feedbackNotifier.value = '';
}
final ButtonStyle payBtnStyle = ElevatedButton.styleFrom(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 25),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30.0),
),
foregroundColor: Colors.white,
backgroundColor: Theme.of(context).colorScheme.primary,
textStyle: const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 16,
),
);
final Widget payBtnText = Text(tr(
'g1_form_pay_send')); // + (!kReleaseMode ? ' ${state.status}' : ''));
return Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
G1PayAmountField(key: payAmountKey),
const SizedBox(height: 10.0),
TextFormField(
key: _formCommentKey,