我想创建一个捐赠页面,用户可以在其中输入金额,并且我可以通过多种方式(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(),
);
},
),
],
)
);
}
}