Lettore musicale: Barra di avanzamento
Fa parte della sezione Layout adattabili del percorso Flutter di Coddy. Lezione 28 di 30.
Un lettore mostra a che punto della canzone sei e ti permette di trascinare il cursore in un altro punto. È uno Slider, il cui valore è memorizzato nello stato.
Sotto ci sono due orari: a sinistra quanto è stato riprodotto, a destra la durata della canzone. Una Row con uno Spacer tra i due li spinge alle estremità, così si allineano con le estremità dello slider su qualsiasi telefono.
const Row(
children: [
Text('0:00'),
Spacer(),
Text('4:00'),
],
)Sfida
FacileAggiungi la barra di avanzamento sotto l'artista:
- un campo
double _position = 0.3;nelloState - un
SizedBox(height: 16), poi unoSliderche mostra_positione salva il nuovo valore insetStatequando viene spostato - una
Rowsotto di esso, con1:12sul bordo sinistro e3:45sul bordo destro
Provalo tu
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
),
home: Scaffold(
appBar: AppBar(title: const Text('Now Playing')),
body: Padding(
padding: const EdgeInsets.all(24),
child: Column(
children: [
Stack(
children: [
Container(
width: double.infinity,
height: 300,
decoration: BoxDecoration(
color: Colors.deepPurple,
borderRadius: BorderRadius.circular(24),
),
child: const Center(
child: Icon(Icons.album, size: 120, color: Colors.white),
),
),
Positioned(
top: 12,
right: 12,
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
decoration: BoxDecoration(
color: Colors.black54,
borderRadius: BorderRadius.circular(8),
),
child: const Text(
'HD',
style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
),
),
),
],
),
const SizedBox(height: 24),
const Text(
'Midnight Drive',
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
const SizedBox(height: 4),
const Text('The Night Owls', style: TextStyle(color: Colors.grey)),
],
),
),
),
);
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Layout adattabili
1Condividere una riga
Expanded riempie la rigaCondividere lo spazio con flexFlexible si adatta al suo elemento figlioSpacer tiene gli elementi separati4Dimensioni e breakpoint
Larghezza completa: double.infinityUna larghezza massimaDimensioni dello schermo: MediaQueryBreakpoint con LayoutBuilder7Progetto: Lettore musicale
Lettore musicale: Copertina dell’albumLettore musicale: Informazioni sul branoEsercitati da solo: Compilatore Flutter online