如何简化在波动中非常复杂的upi_pay代码

问题描述 投票:0回答:1

我想创建一个捐赠页面,用户可以在其中输入金额,并且我可以通过多种方式(Google Pay,Paytm,phonepe等)访问我的帐户。

在插件upi_pay中,我想输入金额然后继续,但是这些元素是如此相互联系,以至于我对flutter陌生,只是无法进行修改。您可以在此处查看代码。

https://pub.dev/packages/upi_pay#-example-tab-

也是前两个字段(接收UPI地址字段和生成随机数字段),我不喜欢并希望删除它,并希望将其替换为用于输入数字的文本字段

[您可以在下面查看我的不完整代码。运行此代码时,我没有得到付款的图标。而且,源代码让我感到非常困惑,因为它们做了很多嵌套工作,而我对flutter很难过。同样欢迎使用任何其他插件信息

import 'package:flutter/material.dart';
import 'package:upi_pay/upi_pay.dart';


class DonationsPageNew2 extends StatefulWidget {
  static const routeName='donationPage3';
  @override
  _DonationsPageNew2State createState() => _DonationsPageNew2State();
}

class _DonationsPageNew2State extends State<DonationsPageNew2> {

  TextEditingController _controller;
  Future<List<ApplicationMeta>> _appsFuture;

  void initState() {
    super.initState();
    _controller = TextEditingController();
  }

  void dispose() {
    _controller.dispose();
    super.dispose();
  }


  Future<void> _onTap(ApplicationMeta app) async {

     final a = await UpiPay.initiateTransaction(
      amount: _controller.text,
      app: app.upiApplication,
      receiverName: 'Chethan',
      receiverUpiAddress: 'chethan@oksbi',
      transactionRef: '123456',
      merchantCode: '7372',
    );
     print("a");
    print(a);
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body:Column(
    children: <Widget>[
      Padding(
        padding: const EdgeInsets.fromLTRB(30, 90, 0, 0),
        child: TextField(
        controller: _controller,
        decoration: InputDecoration(border: OutlineInputBorder(),hintText: 'enter amount in INR',labelText: "Enter the amount"),
        keyboardType: TextInputType.phone,
        ),
      ), // Only numbers can be entered
      FutureBuilder<List<ApplicationMeta>>(
        future: _appsFuture,
        builder: (context, snapshot) {
          if (snapshot.connectionState != ConnectionState.done) {
            return Container();
          }

          return GridView.count(
            crossAxisCount: 2,
            shrinkWrap: true,
            mainAxisSpacing: 8,
            crossAxisSpacing: 8,
            childAspectRatio: 1.6,
            physics: NeverScrollableScrollPhysics(),
            children: snapshot.data
                .map((it) => Material(
              key: ObjectKey(it.upiApplication),
              color: Colors.grey[200],
              child: InkWell(
                onTap: () => _onTap(it),
                child: Column(
                  mainAxisSize: MainAxisSize.min,
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    Image.memory(
                      it.icon,
                      width: 64,
                      height: 64,
                    ),
                    Container(
                      margin: EdgeInsets.only(top: 4),
                      child: Text(
                        it.upiApplication.getAppName(),
                      ),
                    ),
                  ],
                ),
              ),
            ))
                .toList(),
          );
        },
      ),
    ],

    )
    );
  }
}
flutter dart payment
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.