import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:injector/injector.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:prosappco/components/general_drawer_item.dart'; import 'package:prosappco/screens/configuration/policy_text_screen.dart'; import 'package:setting_repository/setting_repository.dart'; import 'dart:io' show Platform; class ConfigurationAboutScreen extends StatefulWidget { const ConfigurationAboutScreen({super.key}); @override State createState() => _ConfigurationAboutScreenState(); } class _ConfigurationAboutScreenState extends State { final settingRepository = Injector.appInstance.get(); SettingEntity? settings; @override void initState() { super.initState(); _loadSettings(); } void _loadSettings() { settingRepository.getSettings().then( (value) => setState(() { settings = value; }), ); } Future _openPolicy(String title, String Function(PoliciesEntity) pick) async { try { final policies = await settingRepository.getPolicies(); if (!mounted) return; Navigator.push( context, CupertinoPageRoute( builder: (_) => PolicyTextScreen(title: title, content: pick(policies)), ), ); } catch (_) { if (!mounted) return; ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('No se pudo cargar el contenido')), ); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Acerca de la aplicación'), ), body: ListView( children: [ GeneralDrawerItem( label: 'Políticas de privacidad', onTap: () => _openPolicy( 'Políticas de privacidad', (p) => p.privacy, ), trailing: true, ), GeneralDrawerItem( label: 'Términos y condiciones', onTap: () => _openPolicy( 'Términos y condiciones', (p) => p.terms, ), trailing: true, ), Platform.isIOS ? GeneralDrawerItem( label: 'Versión de la aplicación', subtitle: settings?.versionIos, ) : Container(), Platform.isAndroid ? GeneralDrawerItem( label: 'Versión de la aplicación', subtitle: settings?.versionAndroid, ) : Container(), ], ), ); } }