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

Merge remote-tracking branch 'origin/ede' into ede

# Conflicts:
#	lib/homepage.dart
#	lib/moodpage.dart
#	pubspec.lock
#	pubspec.yaml
parents 16c5c4c8 1bc90e57
No related branches found
No related tags found
No related merge requests found
import 'package:ambient/widgets/navbars.dart'; import 'package:ambient/widgets/navbars.dart';
import 'dart:io';
import 'package:image_picker/image_picker.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:palette_generator/palette_generator.dart';
class StateMoodPage extends StatefulWidget {
const StateMoodPage({super.key});
@override
State<StateMoodPage> createState() => MoodPage();
}
class MoodPage extends State<StateMoodPage> {
late File _image;
final ImagePicker _picker = ImagePicker();
late PaletteGenerator paletteGenerator;
String imagePath = "";
_getFromGallery() async {
try {
XFile? pickedFile = await _picker.pickImage(
source: ImageSource.gallery,
);
if (pickedFile != null) {
imagePath = pickedFile.path;
setState(() {
_image = File(imagePath);
});
}
} catch (e) {
print("could not load image: ");
print(e);
}
}
_getContainerTodisplay() {
BoxDecoration deco = new BoxDecoration();
var image;
image = _getImageTodisplay();
if (image != null) {
deco = BoxDecoration(
image: DecorationImage(
fit: BoxFit.fitWidth,
image: image,
),
);
} else {
deco = new BoxDecoration(
color: Colors.purple,
);
}
return Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.width * (9.0 / 16.0),
decoration: deco,
);
}
_getImageTodisplay() {
var imageToShow;
try {
imageToShow = FileImage(_image);
return imageToShow;
} catch (e) {
return null;
}
}
Future<PaletteGenerator> _updatePaletteGenerator() async {
if (imagePath != "") {
paletteGenerator = await PaletteGenerator.fromImageProvider(
_getImageTodisplay(),
);
}
return paletteGenerator;
}
_getCollorIndicator() {
return FutureBuilder<PaletteGenerator>(
future: _updatePaletteGenerator(), // async work
builder:
(BuildContext context, AsyncSnapshot<PaletteGenerator> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Center(child: CircularProgressIndicator());
default:
if (snapshot.hasError) {
return PaletteSquare(color: Color.fromARGB(255, 236, 177, 173));
} else {
return Row(children: <Widget>[
PaletteSquare(color: snapshot.data!.mutedColor!.color),
PaletteSquare(color: snapshot.data!.vibrantColor!.color),
PaletteSquare(color: snapshot.data!.dominantColor!.color),
PaletteSquare(color: snapshot.data!.darkMutedColor!.color),
PaletteSquare(color: snapshot.data!.darkVibrantColor!.color),
]);
}
}
});
}
class MoodPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return const Scaffold( return Scaffold(
appBar: AppBar(
title: Text("MoodPage"),
),
body: Center(
child: Column(
//mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
_getContainerTodisplay(),
_getCollorIndicator(),
TextButton(
style: ButtonStyle(
foregroundColor:
MaterialStateProperty.all(Theme.of(context).hintColor),
backgroundColor: MaterialStateProperty.all(
Theme.of(context).backgroundColor),
),
onPressed: _getFromGallery,
child: const Text('AddImage'),
),
],
),
),
);
}
}
@immutable
class PaletteSquare extends StatelessWidget {
const PaletteSquare({
required this.color,
super.key,
});
final Color color;
@override
Widget build(BuildContext context) {
Widget square = Container(
decoration: BoxDecoration(
color: color, border: Border.all(width: 1.0, color: color)),
width: MediaQuery.of(context).size.width / 5,
height: 40,
); );
return square;
} }
} }
...@@ -40,6 +40,8 @@ dependencies: ...@@ -40,6 +40,8 @@ dependencies:
http: ^0.13.5 http: ^0.13.5
just_audio: ^0.9.30 just_audio: ^0.9.30
file_picker: ^5.2.4 file_picker: ^5.2.4
image_picker: ^0.8.6
palette_generator: ^0.3.3+2
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment