showTransactionConfirm method

Future<bool?> showTransactionConfirm(
  1. BuildContext context, {
  2. required Map<String, dynamic> txParams,
  3. required InAppWebViewController ctrl,
})

Implementation

Future<bool?> showTransactionConfirm(
  BuildContext context, {
  required Map<String, dynamic> txParams,
  required InAppWebViewController ctrl,
}) async {
  final requestFrom = (await ctrl.getUrl())?.host ?? '';
  final String from = txParams['from'] ?? '';
  final String to = txParams['to'] ?? '';
  final value = txParams['value'];
  final data = txParams['data'];
  final gas = txParams['gas'];

  return await _showDialog(
    context: context,
    builder: (context) => ListView(
      shrinkWrap: true,
      padding: _theme.contentPadding,
      children: [
        _buildDialogHeader('Transaction Request'),
        SizedBox(height: _theme.itemSpacing),
        _buildInfoRow('Request from', requestFrom),
        Divider(color: _theme.borderColor),
        _buildInfoRow('From', from.ellipsisMidWalletAddress()),
        SizedBox(height: _theme.itemSpacing),
        _buildInfoRow('To', to.ellipsisMidWalletAddress()),
        SizedBox(height: _theme.itemSpacing),
        Text('Details', style: _theme.valueStyle),
        SizedBox(height: _theme.itemSpacing),
        if (gas != null)
          _buildContainer(
            child: _buildInfoRow(
              'Estimated Fee',
              AppUtils.formatCoin(
                BigInt.parse(gas).parseGwei(),
                symbol: "Gwei",
                decimalDigits: 9,
              ),
            ),
          ),
        if (value != null) ...[
          SizedBox(height: _theme.itemSpacing),
          _buildContainer(
            child: _buildInfoRow(
              'Value',
              AppUtils.formatCoin(
                BigInt.parse(value).parseGwei(),
                symbol: "",
                decimalDigits: 9,
              ),
            ),
          ),
        ],
        if (data != null) ...[
          SizedBox(height: _theme.itemSpacing),
          Text(
            'Transaction Data',
            style: _theme.valueStyle,
          ),
          SizedBox(height: _theme.itemSpacing),
          _buildContainer(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                _buildDataAnalysis(data.toString()),
                SizedBox(height: _theme.itemSpacing),
                _buildExpandableHexData(data.toString()),
              ],
            ),
          ),
        ],
        SizedBox(height: _theme.itemSpacing * 2),
        _buildActionButtons(
          context: context,
          cancelText: 'Reject',
          confirmText: 'Confirm',
        ),
      ],
    ),
  );
}