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
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,
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|