付款成功后我想导航到另一个页面

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 值我对吗????

以上是关于付款成功后我想导航到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章

从一个 ViewController 导航到另一个

Flutter:无法导航到另一个页面

登录成功后将视图导航到另一个视图

我想导航到另一个页面并使用 Firestore 数据进行解析,但是当我使用 MaterialPageRoute 时该怎么做?

通过 Angular js 在 index.html 页面中将一个页面导航到另一个页面

如何导航到另一个页面关闭模式?