You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

65 lines
1.6 KiB

import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
class PaymentView extends StatefulWidget {
final String selectedUrl;
PaymentView({this.selectedUrl});
@override
_PaymentViewState createState() => _PaymentViewState();
}
class _PaymentViewState extends State<PaymentView> {
final flutterWebviewPlugin = new FlutterWebviewPlugin();
@override
void initState() {
super.initState();
flutterWebviewPlugin.onBack.listen((event) {
Navigator.pop(context);
});
flutterWebviewPlugin.onUrlChanged.listen((String url) {
print(url);
if (url.contains("#access_token")) {
succeed(url);
}
if (url.contains(
"https://www.facebook.com/connect/login_success.html?error=access_denied&error_code=200&error_description=Permissions+error&error_reason=user_denied")) {
denied();
}
if (url.contains("https://expresspaygh.com/retry_later.php")) {
denied();
}
});
}
denied() {
Navigator.pop(context);
}
succeed(String url) {
var params = url.split("access_token=");
var endparam = params[1].split("&");
flutterWebviewPlugin.clearCache();
flutterWebviewPlugin.cleanCookies();
flutterWebviewPlugin.dispose();
Navigator.pop(context, endparam[0]);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
height: MediaQuery.of(context).size.height,
margin: EdgeInsets.only(top: 10),
child: WebviewScaffold(
url: widget.selectedUrl,
scrollBar: true,
),
),
);
}
}