102 lines
2.9 KiB
Dart
102 lines
2.9 KiB
Dart
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 ?? ''),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|