Flutter:将LaunchUrl替换为WebView

ycl3bljg  于 2023-02-05  发布在  Flutter
关注(0)|答案(1)|浏览(248)

在我的flutter应用中,我使用url_launcher插件启动了一个支付网关,在浏览器中打开页面,但是我更愿意在应用中使用WebView插件打开它。
我需要使用两者吗?如何才能实现这样的。
请协助

    • URL启动程序**
if (selectedPaymentMethod == 'Pay Now' &&
                                      _formKey.currentState!.validate()) {
                                    () async {
                                      final ozowApiRes = await OzowApiProvider()
                                          .createPaymentRequest(
                                        'R${(cart.totalAmount + cart.serviceFee + value * cart.newCylinderPrice).toStringAsFixed(0)}',
                                        userData?['username'],
                                        userData?['phoneNumber'],
                                        userData?['email'],
                                      );
                                      () async {
                                        try {
                                          await launchUrl(
                                            Uri.parse(ozowApiRes.data),
                                          );
                                        } catch (ex) {
                                          throw 'Could not launch $ozowApiRes';
                                        }
                                      }();
                                    }();
vhmi4jdf

vhmi4jdf1#

要做到这一点,你可以使用url_launcherflutter_inappwebview .我建议你使用flutter_inappwebview,如果可能的话,使url_launcher 100% not guaranteed你在inAppWebView中启动,并且flutter_inappwebview给你在页面中的粒度控制.
(1)你可以使用模式LaunchMode.inAppWebViewurl_launcher

await launchUrl(
  Uri.parse("https://www.google.com/"),
  mode: LaunchMode.inAppWebView,
);

(2)或者您可以使用flutter_inappwebview的无状态小部件页面,并只传递购买URL

import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';

class InAppPurchasePage extends StatelessWidget {
  const InAppPurchasePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Purchase Page"),
      ),
      body: InAppWebView(
        initialUrlRequest: URLRequest(
          url: Uri.parse(
            "https://flutter.dev",
          ),
        ),
      ),
    );
  }
}

相关问题