Mostrar la versión en la app

This commit is contained in:
2026-05-05 22:56:25 +02:00
parent 031c190d74
commit 08235999d3
3 changed files with 84 additions and 4 deletions

View File

@@ -3,6 +3,7 @@ import 'package:farolero/l10n/generated/app_localizations.dart';
import 'package:provider/provider.dart';
import '../servicios/servicio_idioma.dart';
import '../servicios/servicio_perfil_usuario.dart';
import '../servicios/servicio_version_app.dart';
import '../tema/componentes_farolero.dart';
import '../tema/tema_app.dart';
@@ -16,6 +17,13 @@ class PantallaAjustes extends StatefulWidget {
class _PantallaAjustesState extends State<PantallaAjustes> {
double _volumen = 0.7;
bool _vibracion = true;
late final Future<String> _versionApp;
@override
void initState() {
super.initState();
_versionApp = ServicioVersionApp.obtenerVersion();
}
@override
Widget build(BuildContext context) {
@@ -129,18 +137,29 @@ class _PantallaAjustesState extends State<PantallaAjustes> {
Text(l10n.about,
style: Theme.of(context).textTheme.titleLarge),
const SizedBox(height: 12),
_filaInfo(context, l10n.version, '1.0.0'),
FutureBuilder<String>(
future: _versionApp,
builder: (context, snapshot) {
return _filaInfo(
context,
l10n.version,
snapshot.data ?? '-',
);
},
),
const SizedBox(height: 8),
_filaInfo(context, l10n.developer, 'FreeTTimeLab'),
const SizedBox(height: 8),
SizedBox(
width: double.infinity,
child: OutlinedButton(
onPressed: () {
onPressed: () async {
final version = await _versionApp;
if (!context.mounted) return;
showLicensePage(
context: context,
applicationName: 'Farolero',
applicationVersion: '1.0.0',
applicationVersion: version,
);
},
child: Text(l10n.licenses),

View File

@@ -0,0 +1,29 @@
import 'package:flutter/services.dart';
class ServicioVersionApp {
static const _channel = MethodChannel('farolero/app_info');
static Future<String> obtenerVersion() async {
final Map<String, dynamic>? info;
try {
info = await _channel.invokeMapMethod<String, dynamic>(
'getAppVersion',
);
} on PlatformException {
return '-';
} on MissingPluginException {
return '-';
}
final versionName = info?['versionName']?.toString();
final versionCode = info?['versionCode']?.toString();
if (versionName == null || versionName.isEmpty) {
return '-';
}
if (versionCode == null || versionCode.isEmpty) {
return versionName;
}
return '$versionName+$versionCode';
}
}