Hoy vamos a aprender a crear un Widget tipo WebView que nos permita visualizar URLs en forma de visor web con Flutter.
Primero vamos a instalar el paquete webview_flutter:
flutter pub add webview_flutter
Y ahora vamos a crear un widget que llamaremos WebViewCustomWidget.dart
import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; class WebViewCustomWidget extends StatefulWidget { final String url; final String titulo; WebViewCustomWidget({required this.url, required this.titulo}); @override _WebViewCustomWidgetState createState() => _WebViewCustomWidgetState(); } class _WebViewCustomWidgetState extends State<WebViewCustomWidget> { late final WebViewController _controller; @override void initState() { super.initState(); _controller = WebViewController()..loadRequest(Uri.parse(widget.url)); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.titulo), ), body: WebViewWidget(controller: _controller), ); } }
Configuración para Android
Asegúrate de que tu proyecto esté configurado para soportar WebView
en Android:
- Permisos de Internet: Asegúrate de que tienes el permiso de internet habilitado en tu archivo
AndroidManifest.xml
, ubicado enandroid/app/src/main/AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET"/>
- Soporte para Android 9.0 (API nivel 28) y superiores: Asegúrate de que estás utilizando un minSdkVersion de al menos 20 o superior. Esto ya está configurado en la mayoría de los proyectos nuevos de Flutter, pero puedes verificarlo en el archivo
android/app/build.gradle
:
defaultConfig { minSdkVersion 20 ... }
Configuración para iOS
Si estás desarrollando para iOS, sigue estos pasos adicionales:
- Habilitar soporte para WebView en iOS: Asegúrate de que tu proyecto esté configurado correctamente para iOS:
- Abre tu proyecto en Xcode.
- En la sección de Signing & Capabilities, selecciona la opción App Sandbox.
- Marca las casillas
Outgoing Connections (Client)
para permitir que la aplicación se comunique a través de Internet.
- Agregar permisos al archivo Info.plist: Si necesitas cargar URLs no seguras, agrega lo siguiente en el archivo
ios/Runner/Info.plist
:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
Utilizar el WebViewer
Para usarlo haremos lo siguiente:
Navigator.of(context).push(MaterialPageRoute( builder: (context) => WebViewCustomWidget(url: 'https://flutter.dev', titulo:"Web View"), ));
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.