showModelSheet static method

Future<bool> showModelSheet(
  1. BuildContext context,
  2. String url,
  3. String success_url,
  4. String cancel,
  5. String? redirect_url,
)

Implementation

static Future<bool> showModelSheet(BuildContext context, String url,
    String success_url, String cancel, String? redirect_url) async {
  bool processed = false;
  WebViewController controller = WebViewController()
    ..setJavaScriptMode(JavaScriptMode.unrestricted)
    ..setBackgroundColor(const Color(0x00000000))
    ..setNavigationDelegate(
      NavigationDelegate(
        onProgress: (int progress) {
          // Update loading bar.
        },
        onPageStarted: (String url) {},
        onPageFinished: (String url) {},
        onWebResourceError: (WebResourceError error) {},
        onNavigationRequest: (NavigationRequest request) {
          if (request.url.startsWith(success_url) ||
              request.url.startsWith(cancel)) {
            Navigator.of(context).pop();
            if ((request.url.startsWith(success_url)) ||
                (redirect_url != null &&
                    request.url.startsWith(redirect_url))) {
              processed = true;
            } else {
              processed = false;
            }
            return NavigationDecision.prevent;
          }
          return NavigationDecision.navigate;
        },
      ),
    )
    ..loadRequest(Uri.parse(url));
  await showModalBottomSheet(
    context: context,
    useSafeArea: true,
    elevation: 4,
    enableDrag: false,
    isScrollControlled: true,
    builder: (builder) {
      return new Container(
        height: MediaQuery
            .of(context)
            .size
            .height * 0.85,
        decoration: new BoxDecoration(
            color: Colors.white,
            borderRadius: new BorderRadius.only(
                topLeft: const Radius.circular(20.0),
                topRight: const Radius.circular(20.0))),
        child: WebViewWidget(controller: controller),
      );
    },
  );

  return processed;
}