【问题标题】: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');

}}

谢谢

【问题讨论】:

  • 你真的应该开始更好地格式化你的代码。如果你继续这样下去,以后读起来会很糟糕......

标签: flutter flutter-layout flutter-dependencies flutter-animation flutter-test


【解决方案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 值我对吗????
猜你喜欢
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
  • 1970-01-01
  • 2023-01-25
  • 1970-01-01
  • 2018-02-03
相关资源
最近更新 更多