import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:prosappco/src/components/pop_appbar.dart';
import 'package:prosappco/src/models/setting_model.dart';
import 'package:prosappco/src/screens/web_view.dart';
import 'package:url_launcher/url_launcher.dart';

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

  @override
  State<AboutScreen> createState() => _AboutScreenState();
}

class _AboutScreenState extends State<AboutScreen> {
  SettingModel? settings;

  @override
  void initState() {
    super.initState();
    if (settings == null) {
      SettingModel.getSettings().then(
        (SettingModel value) => setState(() {
          settings = value;
        }),
      );
    }
  }

  void _launchURL(String url) async {
    if (await canLaunch(url)) {
      await launch(url, forceSafariVC: false, forceWebView: false);
    } else {
      throw 'No se pudo abrir el enlace $url';
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: PopAppbar(
          onPressed: () {
            Navigator.pop(context);
          },
          label: 'Acerca de la aplicación'),
      body: ListView(
        children: [
          ListTile(
            onTap: () {
              if (kIsWeb) {
                _launchURL(settings?.proliticasPrivacidad ?? '');
              } else {
                Navigator.push(
                  context,
                  CupertinoPageRoute(
                    builder: (BuildContext context) {
                      return WebViewScreen(
                        label: 'Políticas de privacidad',
                        link: settings?.proliticasPrivacidad ?? '',
                      );
                    },
                  ),
                );
              }
            },
            title: const Text('Políticas de privacidad'),
            trailing:
                const Icon(Icons.keyboard_arrow_right, color: Colors.black),
          ),
          ListTile(
            onTap: () {
              if (kIsWeb) {
                _launchURL(settings?.terminosCondiciones ?? '');
              } else {
                Navigator.push(
                  context,
                  CupertinoPageRoute(
                    builder: (BuildContext context) {
                      return WebViewScreen(
                        label: 'Términos y condiciones',
                        link: settings?.terminosCondiciones ?? '',
                      );
                    },
                  ),
                );
              }
            },
            title: const Text('Términos y condiciones'),
            trailing:
                const Icon(Icons.keyboard_arrow_right, color: Colors.black),
          ),
          ListTile(
            title: const Text('Versión de la aplicación'),
            subtitle: Text(settings?.version ?? ''),
          ),
        ],
      ),
    );
  }
}
