added comment for payment, changed intent and added amount ui in operations
This commit is contained in:
53
frontend/pweb/lib/controllers/payments/comment_field.dart
Normal file
53
frontend/pweb/lib/controllers/payments/comment_field.dart
Normal file
@@ -0,0 +1,53 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:pshared/provider/payment/amount.dart';
|
||||
|
||||
|
||||
class PaymentCommentFieldController extends ChangeNotifier {
|
||||
final TextEditingController textController;
|
||||
|
||||
PaymentAmountProvider? _provider;
|
||||
bool _isSyncingText = false;
|
||||
|
||||
PaymentCommentFieldController({required String initialComment})
|
||||
: textController = TextEditingController(text: initialComment);
|
||||
|
||||
void update(PaymentAmountProvider provider) {
|
||||
if (identical(_provider, provider)) {
|
||||
_syncTextWithComment(provider.comment);
|
||||
return;
|
||||
}
|
||||
_provider?.removeListener(_handleProviderChanged);
|
||||
_provider = provider;
|
||||
_provider?.addListener(_handleProviderChanged);
|
||||
_syncTextWithComment(provider.comment);
|
||||
}
|
||||
|
||||
void handleChanged(String value) {
|
||||
if (_isSyncingText) return;
|
||||
_provider?.setComment(value);
|
||||
}
|
||||
|
||||
void _handleProviderChanged() {
|
||||
final provider = _provider;
|
||||
if (provider == null) return;
|
||||
_syncTextWithComment(provider.comment);
|
||||
}
|
||||
|
||||
void _syncTextWithComment(String comment) {
|
||||
if (textController.text == comment) return;
|
||||
_isSyncingText = true;
|
||||
textController.value = TextEditingValue(
|
||||
text: comment,
|
||||
selection: TextSelection.collapsed(offset: comment.length),
|
||||
);
|
||||
_isSyncingText = false;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_provider?.removeListener(_handleProviderChanged);
|
||||
textController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user