Pemutar Musik: Penggeser Progres
Termasuk bagian Layout yang Menyesuaikan dalam perjalanan Flutter di Coddy. Pelajaran 28 dari 30.
Pemutar menampilkan posisi lagu saat ini dan memungkinkan kamu menyeret penggeser ke posisi lain. Itu adalah Slider, yang nilainya tersimpan dalam state.
Di bawahnya ada dua waktu: durasi yang sudah diputar di sebelah kiri, dan panjang lagu di sebelah kanan. Row dengan Spacer di antaranya mendorong keduanya ke ujung masing-masing, sehingga sejajar dengan ujung slider di ponsel apa pun.
const Row(
children: [
Text('0:00'),
Spacer(),
Text('4:00'),
],
)Tantangan
MudahTambahkan bilah progres di bawah nama artis:
- sebuah field
double _position = 0.3;di dalamState - sebuah
SizedBox(height: 16), lalu sebuahSlideryang menampilkan_positiondan menyimpan nilai baru disetStatesaat slider digeser - sebuah
Rowdi bawahnya, dengan1:12di tepi kiri dan3:45di tepi kanan
Coba sendiri
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)),
],
),
),
),
);
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Layout yang Menyesuaikan
1Berbagi Ruang dalam Baris
Expanded Mengisi BarisBerbagi Ruang dengan flexFlexible Mengikuti Ukuran AnakSpacer Memisahkan Elemen4Ukuran dan Breakpoint
Lebar Penuh: double.infinityLebar MaksimumUkuran Layar: MediaQueryBreakpoint LayoutBuilder7Proyek: Pemutar Musik
Pemutar Musik: Sampul AlbumPemutar Musik: Info LaguLatihan sendiri: Compiler Flutter online