Skip to content
Snippets Groups Projects
Commit 16c5c4c8 authored by Erik Hinkelmanns's avatar Erik Hinkelmanns
Browse files

- added basic file picker

- file picke can be triggered by clicking the big square in the center of the screen
- added basic music player
- outsourced topbar and controlButtons into widget
- added scene switching via PageView widget
parent 74a6d784
No related branches found
No related tags found
No related merge requests found
// ignore_for_file: prefer_const_constructors, prefer_const_literals_to_create_immutables
import 'dart:io';
import 'package:ambient/moodpage.dart';
import 'package:ambient/widgets/musicPlayer.dart';
import 'package:ambient/widgets/navbars.dart';
import 'package:flutter/material.dart';
import 'package:just_audio/just_audio.dart';
import 'dart:math' as math;
import 'package:google_nav_bar/google_nav_bar.dart';
import 'package:file_picker/file_picker.dart';
class HomePage extends StatefulWidget {
......@@ -18,15 +13,10 @@ class HomePage extends StatefulWidget {
State<StatefulWidget> createState() => _HomePageState();
}
const Color primaryColor = Color(0xFFFFa74a);
const Color onPrimary = Color(0xFFFFFFFF);
const Color primaryContainer = Color(0xFFFFDFBD);
const Color onPrimaryContainer = Color(0xFF312B25);
final player = AudioPlayer();
class _HomePageState extends State<HomePage> {
final player = AudioPlayer();
late List<File> files;
static Color color = Colors.black;
bool isPlaying = false;
......@@ -37,9 +27,6 @@ class _HomePageState extends State<HomePage> {
Color((math.Random().nextDouble() * 0xFFFFFF).toInt()).withOpacity(1.0);
return Scaffold(
appBar: Topbar(title: Text("Ambient")),
endDrawer: SettingsDrawer(),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
......@@ -68,11 +55,10 @@ class _HomePageState extends State<HomePage> {
),
),
ControlButtons(player),
Text("moin"),
SongDescription(player),
],
),
),
bottomNavigationBar: Bottombar(color: color),
);
}
......
import 'dart:ffi';
import 'package:ambient/searchpage.dart';
import 'package:ambient/widgets/navbars.dart';
import 'package:flutter/material.dart';
import 'homepage.dart';
import 'moodpage.dart';
void main() {
runApp(const MyApp());
......@@ -10,9 +15,78 @@ class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const MaterialApp(
return MaterialApp(
debugShowCheckedModeBanner: false,
home: HomePage(),
home: HUD(),
);
}
}
const Color primaryColor = Color(0xFFFFa74a);
const Color onPrimary = Color(0xFFFFFFFF);
const Color primaryContainer = Color(0xFFFFDFBD);
const Color onPrimaryContainer = Color(0xFF312B25);
class HUD extends StatefulWidget {
HUD({super.key});
@override
State<StatefulWidget> createState() => _HUDState();
}
class _HUDState extends State<HUD> {
int _currentIndex = 0;
final List<String> _titleList = ["Player","Mood","Search"];
String _title = "";
PageController _pageController = PageController(initialPage: 0);
@override
void initState() {
_title = _titleList[0];
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: Topbar(title: Text(_title)),
endDrawer: SettingsDrawer(),
body: PageView(
controller: _pageController,
onPageChanged: (newIndex) {
setState(() {
_currentIndex = newIndex;
_title = _titleList[newIndex];
});
},
children: [
HomePage(),
MoodPage(),
SearchPage(),
],
),
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentIndex,
backgroundColor: ligten(primaryContainer),
selectedItemColor: primaryColor,
unselectedItemColor: Colors.black,
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.play_arrow_rounded), label: "Play",),
BottomNavigationBarItem(icon: Icon(Icons.mood), label: "Moods"),
BottomNavigationBarItem(icon: Icon(Icons.search), label: "Suchen"),
],
onTap: (newIndex) {
_pageController.animateToPage(newIndex, duration: const Duration(milliseconds: 500), curve: Curves.ease);
_title = _titleList[newIndex];
},
),
);
}
}
import 'package:ambient/widgets/navbars.dart';
import 'package:flutter/material.dart';
class MoodPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("MoodPage"),
),
return const Scaffold(
);
}
}
......@@ -4,9 +4,6 @@ class SearchPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Searchpage"),
),
);
}
}
......@@ -2,8 +2,10 @@ import 'package:flutter/material.dart';
import 'package:just_audio/just_audio.dart';
import '../homepage.dart';
import '../main.dart';
class ControlButtons extends StatelessWidget {
final AudioPlayer player;
const ControlButtons(this.player, {Key? key}) : super(key: key);
......@@ -57,3 +59,35 @@ class ControlButtons extends StatelessWidget {
);
}
}
class SongDescription extends StatelessWidget {
final AudioPlayer player;
const SongDescription(this.player, {Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
children: [
StreamBuilder<IcyMetadata?>(
stream: player.icyMetadataStream,
builder: (context, snapshot) {
final metadata = snapshot.data;
final titleHeader = metadata?.headers?.name;
final titleInfo = metadata?.info?.title;
//Todo cant find title
if(titleInfo == null){
return const Text("Unknown Title");
}
return Text(titleInfo);
},
),
],
);
}
}
import 'package:flutter/material.dart';
import 'package:google_nav_bar/google_nav_bar.dart';
import '../main.dart';
import '../homepage.dart';
import '../moodpage.dart';
class SettingsDrawer extends StatelessWidget {
const SettingsDrawer({
......@@ -40,7 +38,8 @@ class Topbar extends StatelessWidget implements PreferredSizeWidget{
title: title,
actions: [
Builder(
builder: (BuildContext context) => IconButton(
builder: (BuildContext context) =>
IconButton(
icon: const Icon(Icons.settings_outlined),
onPressed: () => Scaffold.of(context).openEndDrawer(),
))
......@@ -52,13 +51,14 @@ class Topbar extends StatelessWidget implements PreferredSizeWidget{
Size get preferredSize => Size.fromHeight(height);
}
/*
class Bottombar extends StatelessWidget {
const Bottombar({
Key? key,
required this.color,
Key? key
}) : super(key: key);
final Color color;
final Color color = primaryColor;
@override
Widget build(BuildContext context) {
......@@ -88,13 +88,19 @@ class Bottombar extends StatelessWidget {
)
],
onTabChange: (index) {
if (index == 1) {
if (index == 0) {
Navigator.push(context,
MaterialPageRoute(builder: (context) => HomePage()));
} else if(index == 1) {
Navigator.push(context,
MaterialPageRoute(builder: (context) => MoodPage()));
} else {
Navigator.push(context,
MaterialPageRoute(builder: (context) => SearchPage()));
}
},
),
),
);
}
}
\ No newline at end of file
}*/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment