fix(player): stabilize first playback and refresh design
This commit is contained in:
@@ -8,6 +8,8 @@ import '../widgets/pluri_icon.dart';
|
||||
import '../widgets/pluri_premium_widgets.dart';
|
||||
import 'package:pluriwave/widgets/tarjeta_emisora.dart';
|
||||
|
||||
import 'reproducir_y_abrir.dart';
|
||||
|
||||
const _paises = [
|
||||
('Espana', 'ES'),
|
||||
('USA', 'US'),
|
||||
@@ -200,7 +202,7 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
|
||||
itemBuilder: (context, i) => TarjetaEmisora(
|
||||
emisora: resultados[i],
|
||||
esCompacta: true,
|
||||
onTap: () => context.read<EstadoRadio>().reproducir(resultados[i]),
|
||||
onTap: () => reproducirYAbrir(context, resultados[i]),
|
||||
).animate().fadeIn(delay: (i * 20).ms).slideY(begin: 0.08),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@ import '../widgets/pluri_icon.dart';
|
||||
import '../widgets/pluri_premium_widgets.dart';
|
||||
import 'package:pluriwave/widgets/tarjeta_emisora.dart';
|
||||
|
||||
import 'reproducir_y_abrir.dart';
|
||||
|
||||
class PantallaFavoritos extends StatelessWidget {
|
||||
const PantallaFavoritos({super.key});
|
||||
|
||||
@@ -85,7 +87,7 @@ class PantallaFavoritos extends StatelessWidget {
|
||||
key: Key(emisora.uuid),
|
||||
emisora: emisora,
|
||||
esCompacta: true,
|
||||
onTap: () => estado.reproducir(emisora),
|
||||
onTap: () => reproducirYAbrir(context, emisora),
|
||||
),
|
||||
),
|
||||
IconButton.filledTonal(
|
||||
|
||||
@@ -10,6 +10,8 @@ import '../widgets/pluri_icon.dart';
|
||||
import '../widgets/pluri_premium_widgets.dart';
|
||||
import 'package:pluriwave/widgets/tarjeta_emisora.dart';
|
||||
|
||||
import 'reproducir_y_abrir.dart';
|
||||
|
||||
/// Pantalla principal: emisoras populares y por género.
|
||||
class PantallaInicio extends StatefulWidget {
|
||||
const PantallaInicio({super.key});
|
||||
@@ -118,7 +120,7 @@ class _PantallaInicioState extends State<PantallaInicio> {
|
||||
),
|
||||
label: Text(e.nombre, maxLines: 1),
|
||||
onPressed:
|
||||
() => context.read<EstadoRadio>().reproducir(e),
|
||||
() => reproducirYAbrir(context, e),
|
||||
).animate().fadeIn(delay: (i * 50).ms);
|
||||
},
|
||||
),
|
||||
@@ -225,7 +227,7 @@ class _PantallaInicioState extends State<PantallaInicio> {
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(context, i) => TarjetaEmisora(
|
||||
emisora: emisoras[i],
|
||||
onTap: () => context.read<EstadoRadio>().reproducir(emisoras[i]),
|
||||
onTap: () => reproducirYAbrir(context, emisoras[i]),
|
||||
).animate().fadeIn(delay: (i * 30).ms).slideY(begin: 0.1),
|
||||
childCount: emisoras.length,
|
||||
),
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../estado/estado_radio.dart';
|
||||
import '../modelos/emisora.dart';
|
||||
import 'pantalla_reproductor.dart';
|
||||
|
||||
Future<void> reproducirYAbrir(BuildContext context, Emisora emisora) async {
|
||||
final estado = context.read<EstadoRadio>();
|
||||
unawaited(estado.reproducir(emisora));
|
||||
if (!context.mounted) return;
|
||||
await PantallaReproductor.abrir(context, emisora);
|
||||
}
|
||||
Reference in New Issue
Block a user