Musikplayer: Songinformationen
Teil des Abschnitts Layouts für jede Bildschirmgröße der Flutter-Journey von Coddy. Lektion 27 von 30.
Unter dem Cover stehen der Song und der Künstler. Wie der Name auf einer Visitenkarte ist der Song die Zeile, die das Auge zuerst finden sollte: groß und fett. Der Künstler ist eine dezente graue Zeile darunter.
Das Cover ist eine große Form und der Titel eine kleine, daher brauchen sie Abstand voneinander – mehr als der Titel und der Künstler, die zusammengehören. Abstände, die Elemente gruppieren, machen einen Bildschirm leicht lesbar.
Aufgabe
EinfachFüge unter dem Artwork Folgendes hinzu:
- ein
SizedBox(height: 24) Midnight Drive, Größe24und fett- ein
SizedBox(height: 4) The Night OwlsinColors.grey
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: [
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),
),
),
),
],
),
],
),
),
),
);
}
}
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