付款成功后我想导航到另一个页面
Posted
技术标签:
【中文标题】付款成功后我想导航到另一个页面【英文标题】:after payment is successful i want to navigate to another page 【发布时间】:2021-03-24 07:34:18 【问题描述】:我正在开发一个应用程序。付款成功后,我想导航到另一个页面。
这是我的应用付款方式的代码
void handlerPaymentSuccess() Navigator.push(context, MaterialPageRoute(builder: (context) => Itemsbuy()));
我对此进行了编码以导航该页面,但付款成功后却没有显示, 但是在付款完成后,它只显示从 razorpay 付款成功,但它没有显示我导航的页面。付款成功后,它会重定向到第二条路线,而不是重定向到 Itemsbuy();
class SecondRoute extends StatefulWidget
@override
_SecondRouteState createState() => _SecondRouteState();
class _SecondRouteState extends State<SecondRoute>
Razorpay razorpay;
TextEditingController textEditingController = new TextEditingController();
@override
void initState()
razorpay = new Razorpay();
razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, handlerPaymentSuccess);
razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, handlerPaymentError);
razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, handlerExternalWallet);
super.initState();
void handlerPaymentSuccess()
Navigator.push(context, MaterialPageRoute(builder: (context) => Itemsbuy()));//Items purchased
这是我要推送的导航
void handlerPaymentError()
print('error');
void handlerExternalWallet()
@override
void dispose()
super.dispose();
razorpay.clear();
var options =
"key": "empty",
"amount": empty,
"name": 'empty',
"Description": 'empty',
;
try
razorpay.open(options);
catch (e)
debugPrint('error');
谢谢
【问题讨论】:
你真的应该开始更好地格式化你的代码。如果你继续这样下去,以后读起来会很糟糕...... 【参考方案1】:使用 GetX 包而不是 Navigator.of(context) 进行导航
例子:
void handlerPaymentSuccess()
Get.to(Itemsbuy());
还要确保像这样使用 GetMaterialApp 而不是 MaterialApp:
void main()
runApp(MyApp());
class MyApp extends StatelessWidget
@override
Widget build(BuildContext context)
return GetMaterialApp(
home: SplashScreen(),
color: violet,
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.deepPurple,
).copyWith(textTheme: GoogleFonts.montserratTextTheme()),
);
它应该可以工作。
【讨论】:
不,它不工作。当我路由其他页面时,它显示黑屏 它无法正常工作,请您以其他方式帮助我 付款完成后,它只显示从 razorpay 付款成功,但没有显示我导航的 mt 页面,付款成功后它重定向到第二条路线【参考方案2】:class _Payment 扩展状态 bool paymentDone = false;
@override
Widget build(BuildContext context)
if (paymentDone == true)
return NewPage();
else
return CurrentPage();
void _handlePaymentSuccess(PaymentSuccessResponse response) async
Fluttertoast.showToast(msg: "SUCCESS: " + response.paymentId, timeInSecForiosWeb: 4);
setState(()
paymentDone = true;
);
【讨论】:
你能把代码写清楚吗?我不知道课程费用的来源 我有状态小部件作为支付你可以写任何东西 所以在有状态的小部件中我必须给 bool 值我对吗????以上是关于付款成功后我想导航到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章
我想导航到另一个页面并使用 Firestore 数据进行解析,但是当我使用 MaterialPageRoute 时该怎么做?