Musikplayer: Albumcover
Teil des Abschnitts Layouts für jede Bildschirmgröße der Flutter-Journey von Coddy. Lektion 26 von 30.
Jetzt ist es an der Zeit, den gesamten Abschnitt anzuwenden. In den nächsten fünf Lektionen baust du den „Now Playing“-Bildschirm einer Musik-App: Albumcover mit einem Abzeichen, Song und Interpret, einen Fortschrittsregler, die Wiedergabesteuerung und einen dunklen Modus.
Ein Musikplayer eignet sich gut als Layout-Test: Jedes Element muss auf das Smartphone passen, die Bedienelemente müssen sich die Breite gleichmäßig teilen, und auf dem Cover befindet sich eine Beschriftung.
MyApp ist bereits ein StatefulWidget, da der Regler, die Wiedergabetaste und der dunkle Modus einen Zustand benötigen. Im Moment enthält der State noch nichts.
Beginne mit dem Cover. Ein Stack platziert das Abzeichen über dem Bild, und Positioned setzt es in eine Ecke.
Aufgabe
EinfachPlatziere das Albumcover in einem Stack und darüber rechts oben ein HD-Abzeichen, 12 Pixel vom oberen und rechten Rand entfernt:
- Das Abzeichen ist ein
ContainermitEdgeInsets.symmetric(horizontal: 8, vertical: 4)als Innenabstand und einerBoxDecorationmitColors.black54und Ecken mit einem Radius von8 - Sein Inhalt ist
HDin Weiß und fett
Probier es selbst
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: [
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),
),
),
],
),
),
),
);
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Layouts für jede Bildschirmgröße
1Eine Zeile teilen
Expanded füllt die ZeilePlatz teilen mit flexFlexible umschließt sein KindSpacer schafft Abstand4Größen und Breakpoints
Volle Breite: double.infinityEine maximale BreiteBildschirmgröße: MediaQueryBreakpoints mit LayoutBuilder7Projekt: Musikplayer
Musikplayer: AlbumcoverMusikplayer: SonginformationenÜbe selbstständig: Online-Flutter-Compiler