मुख्य सामग्री पर जाएं

Flutter

Flutter का उपयोग करने वाले use case के लिए, inappwebview का उपयोग करने की सलाह दी जाती है।

लेनदेन बनाने और लेनदेन का लिंक प्राप्त करने के बाद, निम्नलिखित इम्प्लीमेंटेशन की सलाह दी जाती है:

  • अपने सामान्य फ्लो में (जिसमें कार्ड नॉट प्रेजेंट सत्यापन शामिल है), आप API के माध्यम से जनरेट किए गए लिंक के साथ inappwebview खोलेंगे;
  • आप अपने एप्लिकेशन की आवश्यकता के अनुसार इस ओपनिंग को कस्टमाइज़ कर सकते हैं;
  • आप निगरानी करेंगे कि URL बदलता है या नहीं (redirectUrl में) और फिर inappwebview को बंद करेंगे।

एक inappwebview खोलने और URL परिवर्तनों को कंट्रोल करने के लिए, आप इसे इस तरह कर सकते हैं:

import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:unico_poc_id_pay_inappwebview/RedirectScreen.dart';
import 'package:unico_poc_id_pay_inappwebview/service.dart';

Widget setWebView(String URL_TO_LOAD) {
InAppWebViewGroupOptions options = InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
useShouldOverrideUrlLoading: true,
mediaPlaybackRequiresUserGesture: false,
),
android: AndroidInAppWebViewOptions(
useHybridComposition: true,
),
ios: IOSInAppWebViewOptions(
allowsInlineMediaPlayback: true,
));

return Expanded(
child: InAppWebView(
initialUrlRequest: URLRequest(
url: Uri.parse(URL_TO_LOAD),
),
initialOptions: options,
androidOnPermissionRequest: (controller, origin, resources) async {
return PermissionRequestResponse(
resources: resources,
action: PermissionRequestResponseAction.GRANT);
},
onWebViewCreated: (controller) {
setState(() {
_inAppWebViewController = controller;
});
},
onLoadStart: (controller, url) {
print('LOADING');
setState(() {
_link = url.toString();
});
},
onProgressChanged: (controller, progress) {
setState(() {
progress == 100 ? _isLoading = false : _isLoading = true;
});
},
onLoadStop: (controller, url) {
print('LOADED');
setState(() {
_link = url.toString();
});
},
shouldOverrideUrlLoading: (controller, navigationAction) async {
var uri = navigationAction.request.url;
if (uri == Uri.parse("<URL_TO_OBSERVER>")) {
setState(() {
_link = "";
});

Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const RedirectScreen(),
),
);
return NavigationActionPolicy.CANCEL;
}
return NavigationActionPolicy.ALLOW;
},
),
);
}

कैमरा अनुमति प्राप्त करने के लिए, आप इसे इस तरह कर सकते हैं:

import 'package:permission_handler/permission_handler.dart';

void requestPermission() async {
var status = await Permission.camera.status;
if (status.isDenied) {
if (await Permission.camera.request().isGranted) {
print("ok");
}
}
}
नोट

सही ढंग से कार्य करने के लिए निम्नलिखित अनुमतियां आवश्यक हैं, जैसे कि:

  • कैमरा
  • जियोलोकेशन

अधिक जानकारी के लिए, हम आधिकारिक flutter_inappwebview दस्तावेज़ पढ़ने की सलाह देते हैं।