1- import 'package:didpay/features/account/account_providers.dart' ;
21import 'package:didpay/features/device/device_info_service.dart' ;
3- import 'package:didpay/features/send/scan_qr_page .dart' ;
2+ import 'package:didpay/features/did_qr/did_qr .dart' ;
43import 'package:didpay/features/send/send_confirmation_page.dart' ;
54import 'package:didpay/l10n/app_localizations.dart' ;
65import 'package:didpay/shared/theme/grid.dart' ;
@@ -17,20 +16,17 @@ class SendDidPage extends HookConsumerWidget {
1716
1817 @override
1918 Widget build (BuildContext context, WidgetRef ref) {
20- final did = ref.watch (didProvider);
21-
2219 final focusNode = useFocusNode ();
2320 final isPhysicalDevice = useState (true );
2421 final errorText = useState <String ?>(null );
2522 final recipientDidController = useTextEditingController ();
2623
2724 useEffect (
2825 () {
29- Future .microtask (() async {
30- isPhysicalDevice.value =
31- await ref.read (deviceInfoServiceProvider).isPhysicalDevice ();
32- });
33-
26+ Future .microtask (
27+ () async => isPhysicalDevice.value =
28+ await ref.read (deviceInfoServiceProvider).isPhysicalDevice (),
29+ );
3430 return null ;
3531 },
3632 [],
@@ -48,12 +44,12 @@ class SendDidPage extends HookConsumerWidget {
4844 child: Column (
4945 crossAxisAlignment: CrossAxisAlignment .stretch,
5046 children: [
51- _buildScanQr (
47+ DidQr . buildScanTile (
5248 context,
49+ Loc .of (context).scanRecipientQrCode,
5350 recipientDidController,
5451 errorText,
55- isPhysicalDevice,
56- did.uri,
52+ isPhysicalDevice: isPhysicalDevice.value,
5753 ),
5854 _buildForm (
5955 context,
@@ -68,7 +64,6 @@ class SendDidPage extends HookConsumerWidget {
6864 ),
6965 _buildSendButton (
7066 context,
71- did.uri,
7267 recipientDidController.text,
7368 errorText.value,
7469 ),
@@ -134,40 +129,8 @@ class SendDidPage extends HookConsumerWidget {
134129 ),
135130 );
136131
137- Widget _buildScanQr (
138- BuildContext context,
139- TextEditingController recipientDidController,
140- ValueNotifier <String ?> errorText,
141- ValueNotifier <bool > isPhysicalDevice,
142- String did,
143- ) =>
144- Padding (
145- padding: const EdgeInsets .symmetric (vertical: Grid .xxs),
146- child: ListTile (
147- leading: const Icon (Icons .qr_code),
148- title: Text (
149- Loc .of (context).scanQrCode,
150- style: Theme .of (context).textTheme.bodyMedium,
151- ),
152- trailing: const Icon (Icons .chevron_right),
153- onTap: () => isPhysicalDevice.value
154- ? _scanQrCode (
155- context,
156- recipientDidController,
157- errorText,
158- Loc .of (context).noDidQrCodeFound,
159- )
160- : _simulateScanQrCode (
161- context,
162- recipientDidController,
163- did,
164- ),
165- ),
166- );
167-
168132 Widget _buildSendButton (
169133 BuildContext context,
170- String senderDid,
171134 String recipientDid,
172135 String ? errorText,
173136 ) {
@@ -181,7 +144,7 @@ class SendDidPage extends HookConsumerWidget {
181144 context,
182145 MaterialPageRoute (
183146 builder: (context) => SendConfirmationPage (
184- did: senderDid ,
147+ did: recipientDid ,
185148 amount: sendAmount,
186149 ),
187150 ),
@@ -197,33 +160,4 @@ class SendDidPage extends HookConsumerWidget {
197160 final result = await DidResolver .resolve (did);
198161 return ! result.hasError ();
199162 }
200-
201- Future <void > _scanQrCode (
202- BuildContext context,
203- TextEditingController recipientDidController,
204- ValueNotifier <String ?> errorText,
205- String errorMessage,
206- ) async {
207- // ignore: use_build_context_synchronously
208- final qrValue = await Navigator .of (context).push <String >(
209- MaterialPageRoute (builder: (context) => const ScanQrPage ()),
210- );
211-
212- final isValid = qrValue != null && await _isValidDid (qrValue);
213- recipientDidController.text = isValid ? qrValue : '' ;
214- errorText.value = isValid ? null : errorMessage;
215- }
216-
217- void _simulateScanQrCode (
218- BuildContext context,
219- TextEditingController recipientDidController,
220- String did,
221- ) {
222- ScaffoldMessenger .of (context).showSnackBar (
223- SnackBar (
224- content: Text (Loc .of (context).simulatedQrCodeScan),
225- ),
226- );
227- recipientDidController.text = did;
228- }
229163}
0 commit comments