我的Flutter应用要求在应用外部的网络浏览器中通过PayPal付款。付款完成后,用户将返回到应用程序,并应推送“谢谢”页面。
我正在使用_launchURL从应用程序内部启动Web浏览器,并使用以下示例PayPal网址定义付款。
使用SystemChannels.lifecycle.setMessageHandler我应该能够测试应用何时从Web浏览器返回(AppLifecycleState.resumed)。但是,如何从Web浏览器中捕获返回URL(http://example.com)或其他值,以确认它来自交易完成页面,并应将其推送至应用程序的“谢谢”页面?
是否可以将浏览器中的值传递回应用程序?
我的另一个想法是使用Uni_links对应用程序中的“谢谢”页面进行“深层链接”,并将其作为PayPal网址中的返回网址参数?
我对解决方案有点迷茫,只是陌生,所以任何建议/指导都将不胜感激。
答案 0 :(得分:0)
我假设您正在使用此_launchURL。要执行您想要的操作,请创建ThankYou类,并以以下方式调用它。您可能需要在调用thankYou屏幕之前检查resultingValue。我还没有足够使用url功能来知道返回的内容(如果有的话)。它可能为null,某种int,例如找不到404 url,也许是String?
import 'ThankYou.dart';
_launchURL() async {
const url = 'https://flutter.io';
if (await canLaunch(url)) {
await launch(url).then((resultingValue){
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ThankYou()));
});
} else {
throw 'Could not launch $url';
}
}