// ignore_for_file: avoid_print import 'package:fluent_ui/fluent_ui.dart' as fluent; import 'package:fluentui_system_icons/fluentui_system_icons.dart'; import 'package:flutter/material.dart'; import 'package:music_web_player/api.dart'; import 'package:music_web_player/ui/music_player.dart'; class PlayerApp extends StatelessWidget { const PlayerApp({Key? key}) : super(key: key); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Music player', debugShowCheckedModeBanner: false, theme: ThemeData( primarySwatch: Colors.green, brightness: Brightness.dark, ), home: fluent.FluentTheme( child: const AppHome(), data: fluent.ThemeData( iconTheme: const IconThemeData(color: Colors.white)), ), ); } } class AppHome extends StatefulWidget { const AppHome({Key? key}) : super(key: key); @override State createState() => _AppHomeState(); } class _AppHomeState extends State { var error = false; List? musics; Future load() async { try { setState(() => error = false); musics = await API.getList(); setState(() {}); } catch (e, s) { print("$e $s"); setState(() => error = true); } } @override void initState() { super.initState(); load(); } @override Widget build(BuildContext context) { return Scaffold(body: buildBody(context)); } Widget buildBody(BuildContext context) { if (error) { return Center( child: IntrinsicHeight( child: Column( children: [ const Icon( FluentIcons.warning_24_regular, size: 50, color: Colors.white, ), const SizedBox(height: 50), const Text("Failed to load musics list!"), const SizedBox(height: 50), fluent.FilledButton( onPressed: load, child: Text("Try again".toUpperCase()), ), ], ), )); } if (musics == null) { return const Center(child: fluent.ProgressRing()); } if (musics!.isEmpty) { return const Center(child: Text("Musics list is empty!")); } return MusicPlayer(musicsList: musics!); } }