LogoLogo
Useful links
  • Home
  • Product guides
  • API
  • SDKs
  • Overview
  • OUR SOLUTIONS
    • User Onboarding
    • ID Document Verification
    • Know Your Customer - KYC
    • Know Your Business - KYB
    • Account Takeover Prevention
  • USER GUIDE
    • Trust Platform
      • New Query
      • Executions
      • Company
      • Onboarding List
      • Onboarding Builder
      • Query Templates
      • Workflow Builder
    • Smart Auth (identity)
      • Getting Started
      • Access Token
      • Checking the Response
  • Quick Start Guides
    • Onboarding Journey
    • Company Search through API
    • Onboarding links into WebView and iFrame
      • WebView
        • Android
        • iOS
        • React Native
        • Flutter
      • iFrame
      • Events
LogoLogo

2025 © Caf. - All rights reserved

On this page
  • Dependencies
  • Android Manifest
  • iOS Info.plist
  • Flutter WebView (Dart)
  1. Quick Start Guides
  2. Onboarding links into WebView and iFrame
  3. WebView

Flutter

This document provides instructions to create a WebView using Flutter.

Last updated 2 months ago

Dependencies

To create a WebView to a Flutter application, it's needed to apply the dependencies and to your pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  flutter_inappwebview: ^6.0.0
  permission_handler: ^11.3.1

Android Manifest

Add these lines to the AndroidManifest.xml file in your Android app module:

<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

iOS Info.plist

Add these lines to the Info.plist file in you iOS module:

<key>NSCameraUsageDescription</key>
<string>Camera Permission</string>
<key>NSMotionUsageDescription</key>
<string>Motion Permission</string>

Flutter WebView (Dart)

This is an example of an activity using a WebView

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const WebViewScreen(),
    );
  }
}

class WebViewScreen extends StatefulWidget {
  const WebViewScreen({super.key});

  @override
  _WebViewScreenState createState() => _WebViewScreenState();
}

class _WebViewScreenState extends State<WebViewScreen> {
  InAppWebViewController? webViewController;

  @override
  void initState() {
    super.initState();
    _checkCameraPermission();
  }

  Future<void> _checkCameraPermission() async {
    var status = await Permission.camera.status;
    if (!status.isGranted) {
      await Permission.camera.request();
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Flutter WebView Example')),
      body: InAppWebView(
        initialUrlRequest: URLRequest(
          url: WebUri.uri(Uri.parse('https://cadastro.io/:token')),
        ),
        onWebViewCreated: (controller) {
          webViewController = controller;
        },
        androidOnPermissionRequest: (controller, origin, resources) async {
          return PermissionRequestResponse(
            resources: resources,
            action: PermissionRequestResponseAction.GRANT,
          );
        },
      ),
    );
  }
}
flutter_inappwebview
permission_handler