נגן מוזיקה: מחוון התקדמות
חלק מהיחידה פריסות שמתאימות למסך במסלול ה-Flutter של Coddy. שיעור 28 מתוך 30.
נגן מציג כמה רחוק הגעת בשיר, ומאפשר לך לגרור למיקום אחר. זהו Slider, שהערך שלו נשמר במצב.
מתחתיו מופיעים שני זמנים: כמה זמן כבר הושמע בצד שמאל, ואורך השיר בצד ימין. Row עם Spacer ביניהם דוחף אותם לשני הקצוות, כך שהם מיושרים לקצוות של פס המחוון בכל טלפון.
const Row(
children: [
Text('0:00'),
Spacer(),
Text('4:00'),
],
)אתגר
קלהוסף את פס ההתקדמות מתחת לאמן:
- שדה
double _position = 0.3;בתוךState SizedBox(height: 16), ואחריוSliderשמציג את_positionושומר את הערך החדש בתוךsetStateכשהוא זזRowמתחתיו, עם1:12בקצה השמאלי ועם3:45בקצה הימני
נסו בעצמכם
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)),
],
),
),
),
);
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פריסות שמתאימות למסך
1חלוקת מקום בשורה
Expanded ממלא את השורהחלוקת מקום באמצעות flexFlexible נצמד לילד שלוSpacer מפריד בין הפריטים4גדלים ונקודות שבירה
רוחב מלא: double.infinityרוחב מרביגודל המסך: MediaQueryנקודות שבירה באמצעות LayoutBuilder7פרויקט: נגן מוזיקה
נגן מוזיקה: עטיפת האלבוםנגן מוזיקה: פרטי השירתרגלו בעצמכם: קומפיילר Flutter אונליין