Unable to show biometric authentication dialog using flutter webview

46 views Asked by At

I have a flutter application, which uses webview to convert website to mobile app. The website is using webauthn for biometric authentication. It works fine when website link open in mobile browser. But in mobile application, biometric authentication dialog does not populate and there are no error shown in console logs.

I am using flutter_webview_pro library in mobile app. I also tried some other webveiw libraries for this purpose but not succeeded.

I have tried below given code to test but unable to populate biometric verification.

import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:flutter_webview_pro/webview_flutter.dart';
import 'package:path_provider/path_provider.dart';

void main() => runApp(MaterialApp(home: WebViewExample()));


class WebViewExample extends StatefulWidget {
  @override
  _WebViewExampleState createState() => _WebViewExampleState();
}

class _WebViewExampleState extends State<WebViewExample> {
  final Completer<WebViewController> _controller =
      Completer<WebViewController>();

  @override
  void initState() {
    super.initState();
    if (Platform.isAndroid) {
      WebView.platform = SurfaceAndroidWebView();
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.green,
      appBar: AppBar(
        title: const Text('Flutter WebView example'),    
      ),
      
      body: Builder(builder: (BuildContext context) {
        return WebView(
          initialUrl: 'https://usama524.github.io/demo.github.io/',
          // initialUrl: 'https://flutter.dev',
          javascriptMode: JavascriptMode.unrestricted,
          onWebViewCreated: (WebViewController webViewController) {
            _controller.complete(webViewController);
          },
          onProgress: (int progress) {
            print('WebView is loading (progress : $progress%)');
          },
          javascriptChannels: <JavascriptChannel>{
            _toasterJavascriptChannel(context),
          },
          navigationDelegate: (NavigationRequest request) {
            if (request.url.startsWith('https://www.youtube.com/')) {
              print('blocking navigation to $request}');
              return NavigationDecision.prevent;
            }
            print('allowing navigation to $request');
            return NavigationDecision.navigate;
          },
          onPageStarted: (String url) {
            print('Page started loading: $url');
          },
          onPageFinished: (String url) {
            print('Page finished loading: $url');
          },
          gestureNavigationEnabled: true,
          backgroundColor: const Color(0x00000000),
          geolocationEnabled: true, // set geolocationEnable true or not
        );
      }),
    );
  }
}
                  

Expected: Press register button for testing biometric authentication feature. Biometric authentication dialog should appear.

0

There are 0 answers