Hoy vamos a aprender cómo podemos crear un Widget que nos permita aceptar las condiciones de uso del sistema antes de registrarnos en la plataforma.
Lo primero que vamos a hacer es crear este widget que llamaremos condiciones_uso.dart
import 'package:flutter/material.dart'; class CondicionesUso extends StatefulWidget { CondicionesUso ({Key? key}) : super(key: key); final GlobalKey<_CondicionesUsoState> key = GlobalKey<_CondicionesUsoState>(); @override _CondicionesUsoState createState() => _CondicionesUsoState(); bool getPoliticaAceptada() { return key.currentState!.isChecked; } } class _CondicionesUsoState extends State<AceptarPolitica> { bool isChecked = false; @override Widget build(BuildContext context) { return Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Container( margin: EdgeInsets.only(bottom: 20), child: Checkbox( value: isChecked, onChanged: (value) { setState(() { isChecked = value!; }); }, ), ), // Enlace para abrir las condiciones de uso en una web InkWell( onTap: () { launch('URL_POLITICA_PRIVACIDAD'); }, child: Container( alignment: Alignment.centerLeft, margin: EdgeInsets.only(bottom: 20), child: Text( "Aceptar los términos y condiciones", style: TextStyle( color: Colors.blue, decoration: TextDecoration.underline, ), ), ), ), ], ); } }
Para poder utilizar este código necesitamos añadir esta librería:
dependencies: url_launcher: ^6.0.6
Lo que hacemos con este Widget es:
- Guardamos el estado del checkbox en checked o no checked.
- Podemos obtener el estado de checked con la función getPoliticaAceptada()
- Además añadimos un link para que el usuario pueda comprobar la política de privacidad.
- Recuerda cambiar el contenido de URL_POLITICA_PRIVACIDAD por la URL donde tengas la política de privacidad de tu servicio.
Para utilizar este Widget haremos lo siguiente:
Vamos a al screen dónde queremos utilizarlo:
//Primero lo importamos import 'condiciones_uso.dart'; ... //Lo instanciamos AceptarPolitica aceptarPoliticaWidget = AceptarPolitica(); //Para agrearlo a la vista hacemos esto: Column( children: <Widget>[ aceptarPoliticaWidget, ], ), //Para comprobar su estado, antes de enviar la petición de registro de usuario hacemos lo sigiente: if (!aceptarPoliticaWidget.getPoliticaAceptada()) { ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text( 'Error, por favor, acepte los términos y condiciones de uso.'))); return; }
Con este código (que explico en los comentarios) podemos utilizar este widget.
Para obtener el valor de si ha pulsado o no, usamos esta línea:
aceptarPoliticaWidget.getPoliticaAceptada()
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.