Commit 552a7127 authored by Lila NICKLER's avatar Lila NICKLER

Restructuration du widget et des listes de BDD + Ajout du visuel Etoile pour mettre en favori

parent a8c2a6c2
...@@ -2,16 +2,15 @@ import 'package:flutter/cupertino.dart'; ...@@ -2,16 +2,15 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'Widget3000.dart';
class MediaItem { class MediaItem {
String name; String name;
String description; String description;
String image; String image;
final _saved = Set<MediaItem>();
...@@ -28,10 +27,9 @@ class MediaItem { ...@@ -28,10 +27,9 @@ class MediaItem {
} }
/* ListView mediaDisplay(MediaItem item) {
ListView mediaDisplay (MediaItem item) const TextStyle titleStyle = TextStyle(
{ fontSize: 30, fontWeight: FontWeight.bold, color: Colors.blue);
const TextStyle titleStyle = TextStyle(fontSize: 30,fontWeight: FontWeight.bold, color: Colors.blue);
const TextStyle bodyStyle = TextStyle(fontSize: 11); const TextStyle bodyStyle = TextStyle(fontSize: 11);
final alreadySaved = _saved.contains(MediaItem); final alreadySaved = _saved.contains(MediaItem);
...@@ -40,77 +38,88 @@ class MediaItem { ...@@ -40,77 +38,88 @@ class MediaItem {
physics: new NeverScrollableScrollPhysics(), physics: new NeverScrollableScrollPhysics(),
children: [ children: [
ListTile( ListTile(
title: Text(item.name, style: GoogleFonts.montserrat(textStyle: titleStyle),textAlign: TextAlign.center,), title: Text(
item.name, style: GoogleFonts.montserrat(textStyle: titleStyle),
textAlign: TextAlign.center,),
trailing: Icon( trailing: Icon(
alreadySaved ? Icons.favorite : Icons.favorite_border, alreadySaved ? Icons.favorite : Icons.favorite_border,
color: alreadySaved ? Colors.red : null, color: alreadySaved ? Colors.red : null),
),), onTap: () {
setState(() {
if (alreadySaved) {
_saved.remove(item);
} else {
_saved.add(item);
}
});
},
),
GridView.count( GridView.count(
crossAxisCount: 2, crossAxisCount: 2,
physics: new NeverScrollableScrollPhysics(), physics: new NeverScrollableScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
children: [ children: [
Image.asset(item.image), Image.asset(item.image),
Align( alignment: Alignment.center, Align(alignment: Alignment.center,
child:Text(item.description, style:GoogleFonts.montserrat(textStyle: bodyStyle), textAlign: TextAlign.justify, )), child: Text(item.description,
style: GoogleFonts.montserrat(textStyle: bodyStyle),
textAlign: TextAlign.justify,)),
]), ]),
], ],
); );
}*/
MediaItem(String name, String desc, String image) {
this.name = name;
this.description = desc;
this.image = image;
} }
MediaItem(String name, String desc, String image)
{
this.name = name;
this.description = desc;
this.image = image;
}
} }
class DataBase class DataBase
{ {
static List <ListView> _listSeries= <ListView>[]; static List <MediaItem> _listSeries= <MediaItem>[];
static List <ListView> _listGames = <ListView>[]; static List <MediaItem> _listGames = <MediaItem>[];
MediaItem item;
DataBase() DataBase()
{ {
item = new MediaItem("name","desc","image"); _listSeries.add(MediaItem(
_listSeries.add(item.mediaDisplay(MediaItem(
"LES SIMPSON", "LES SIMPSON",
"Les Simpson, famille américaine moyenne, vivent à Springfield. Homer, le père, a deux passions : regarder la télé et boire des bières. Mais son quotidien est rarement reposant, entre son fils Bart qui fait toutes les bêtises possibles, sa fille Lisa qui est une surdouée, ou encore sa femme Marge qui ne supporte pas de le voir se soûler à longueur de journée.", "Les Simpson, famille américaine moyenne, vivent à Springfield. Homer, le père, a deux passions : regarder la télé et boire des bières. Mais son quotidien est rarement reposant, entre son fils Bart qui fait toutes les bêtises possibles, sa fille Lisa qui est une surdouée, ou encore sa femme Marge qui ne supporte pas de le voir se soûler à longueur de journée.",
"assets/images/lesSimpson.jpg"))); "assets/images/lesSimpson.jpg"));
_listSeries.add(item.mediaDisplay(MediaItem( _listSeries.add((MediaItem(
"DARK", "DARK",
"Un enfant disparu lance quatre familles dans une quête éperdue pour trouver des réponses. La chasse au coupable fait émerger les péchés et les secrets d'une petite ville.", "Un enfant disparu lance quatre familles dans une quête éperdue pour trouver des réponses. La chasse au coupable fait émerger les péchés et les secrets d'une petite ville.",
"assets/images/dark.jpg"))); "assets/images/dark.jpg")));
_listSeries.add(item.mediaDisplay(MediaItem( _listSeries.add((MediaItem(
"PEAKY BLINDERS", "PEAKY BLINDERS",
"Birmingham, en 1919. Un gang familial règne sur un quartier de la ville : les Peaky Blinders, ainsi nommés pour les lames de rasoir qu'ils cachent dans la visière de leur casquette.", "Birmingham, en 1919. Un gang familial règne sur un quartier de la ville : les Peaky Blinders, ainsi nommés pour les lames de rasoir qu'ils cachent dans la visière de leur casquette.",
"assets/images/peakyBlinders.jpg"))); "assets/images/peakyBlinders.jpg")));
_listSeries.add(item.mediaDisplay(MediaItem( _listSeries.add((MediaItem(
"BLACK MIRROR", "BLACK MIRROR",
"Chaque épisode de cette anthologie montre la dépendance des hommes vis-à-vis de tout ce qui a un écran...", "Chaque épisode de cette anthologie montre la dépendance des hommes vis-à-vis de tout ce qui a un écran...",
'assets/images/blackmirror.jpg'))); 'assets/images/blackmirror.jpg')));
_listGames.add(item.mediaDisplay(MediaItem( _listGames.add((MediaItem(
"Assassin's Creed: Odyssey", "Assassin's Creed: Odyssey",
"Écrivez votre propre odyssée et devenez un héros spartiate de légende dans Assassin's Creed® Odyssey, une aventure où vous forgerez votre destin et tracerez votre chemin dans un univers sur le point de s'effondrer. Influez sur l'histoire et découvrez un univers riche et évoluant en permanence en fonction de vos choix.", "Écrivez votre propre odyssée et devenez un héros spartiate de légende dans Assassin's Creed® Odyssey, une aventure où vous forgerez votre destin et tracerez votre chemin dans un univers sur le point de s'effondrer. Influez sur l'histoire et découvrez un univers riche et évoluant en permanence en fonction de vos choix.",
"assets/images/acOdyssey.jpg"))); "assets/images/acOdyssey.jpg")));
_listGames.add(item.mediaDisplay(MediaItem( _listGames.add((MediaItem(
"Mario Kart 8 Deluxe", "Mario Kart 8 Deluxe",
"Appuyez sur le champignon et affûtez vos carapaces, Mario Kart 8 Deluxe va tout retourner sur Nintendo Switch ! Foncez à fond les ballons la tête à l'envers avec les pneus anti-gravité ! Irez-vous plus vite en passant par le plafond ? Ou allez-vous tracer au sol entre les bananes et les batailles de carapace ? Tous les coups les plus fourbes sont permis pour se hisser à la première place !", "Appuyez sur le champignon et affûtez vos carapaces, Mario Kart 8 Deluxe va tout retourner sur Nintendo Switch ! Foncez à fond les ballons la tête à l'envers avec les pneus anti-gravité ! Irez-vous plus vite en passant par le plafond ? Ou allez-vous tracer au sol entre les bananes et les batailles de carapace ? Tous les coups les plus fourbes sont permis pour se hisser à la première place !",
"assets/images/mk8.jpg"))); "assets/images/mk8.jpg")));
_listGames.add(item.mediaDisplay(MediaItem( _listGames.add((MediaItem(
"The Legend of Zelda: Breath of the wild", "The Legend of Zelda: Breath of the wild",
"Oubliez tout ce que vous savez sur les jeux The Legend of Zelda. Plongez dans un monde de découverte, d'exploration et d'aventure dans The Legend of Zelda: Breath of the Wild, un nouveau jeu qui vient bouleverser la série à succès. Voyagez à travers champs, traversez des forêts et grimpez sur des sommets dans votre périple où vous explorez le royaume d'Hyrule en ruines à travers cette aventure à ciel ouvert.", "Oubliez tout ce que vous savez sur les jeux The Legend of Zelda. Plongez dans un monde de découverte, d'exploration et d'aventure dans The Legend of Zelda: Breath of the Wild, un nouveau jeu qui vient bouleverser la série à succès. Voyagez à travers champs, traversez des forêts et grimpez sur des sommets dans votre périple où vous explorez le royaume d'Hyrule en ruines à travers cette aventure à ciel ouvert.",
"assets/images/zeldaBOTW.jpg"))); "assets/images/zeldaBOTW.jpg")));
} }
List <ListView> getlistSeries() List <MediaItem> getlistSeries()
{ {
return _listSeries; return _listSeries;
} }
List <ListView> getlistGames() List <MediaItem> getlistGames()
{ {
return _listGames; return _listGames;
} }
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:mediateque_tp1/Media.dart'; import 'package:mediateque_tp1/Media.dart';
class Widget3000{ class Widget3000 extends StatefulWidget{
Widget view; final List <MediaItem> list ;
MediaItem mediaItem ;
Widget3000({Key key, @required this.list}):super (key:key);
@override
_Widget3000State createState() => _Widget3000State();
Widget3000(List <ListView> list){ }
view= Column(
children: [Expanded( class _Widget3000State extends State<Widget3000> {
child:ListView.builder( _Widget3000State(): super();
scrollDirection: Axis.vertical, final _saved = List <MediaItem>();
shrinkWrap: true, DataBase dataB = new DataBase();
padding: const EdgeInsets.all(8),
itemCount: list.length, ListView mediaDisplay(MediaItem item) {
itemBuilder: (BuildContext context, int index) const TextStyle titleStyle = TextStyle(fontSize: 30, fontWeight: FontWeight.bold, color: Colors.blue);
{ const TextStyle bodyStyle = TextStyle(fontSize: 11);
return Container( final alreadySaved = _saved.contains(MediaItem);
height: 300,
child: Center(child: list[index])); return ListView(
}) shrinkWrap: true,
) physics: new NeverScrollableScrollPhysics(),
] children: [
ListTile(
title: Text(
item.name, style: GoogleFonts.montserrat(textStyle: titleStyle),
textAlign: TextAlign.center,),
trailing: Icon(
alreadySaved ? Icons.star_outline_outlined : Icons.star_border_outlined,
color: alreadySaved ? Colors.red : null),
onTap: () {
setState(() {
if (alreadySaved) {
_saved.remove(item);
} else {
_saved.add(item);
}
});
},
),
GridView.count(
crossAxisCount: 2,
physics: new NeverScrollableScrollPhysics(),
shrinkWrap: true,
children: [
Image.asset(item.image),
Align(alignment: Alignment.center,
child: Text(item.description,
style: GoogleFonts.montserrat(textStyle: bodyStyle),
textAlign: TextAlign.justify,)),
]),
],
); );
} }
Widget getThisFuckingWidget(){return view;} List <ListView> buildList (List <MediaItem> listItem)
{
List <ListView> listDisplay= <ListView>[];
for (int i =0; i< listItem.length; i++)
{
listDisplay.add(mediaDisplay(listItem[i]));
}
return listDisplay;
}
Widget build(BuildContext context) {
List <ListView> _list= buildList(widget.list);
return Column(
children: [Expanded(
child:ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
padding: const EdgeInsets.all(8),
itemCount: _list.length,
itemBuilder: (BuildContext context, int index)
{
return Container(
height: 300,
child: Center(child: _list[index]));
})
),
]
);
}
} }
...@@ -50,4 +112,5 @@ class Description extends StatelessWidget { ...@@ -50,4 +112,5 @@ class Description extends StatelessWidget {
), ),
); );
} }
} }
\ No newline at end of file
...@@ -43,14 +43,14 @@ class _MyHomePageState extends State<MyHomePage> { ...@@ -43,14 +43,14 @@ class _MyHomePageState extends State<MyHomePage> {
final List<int> colorCodes = <int>[600, 500, 100]; final List<int> colorCodes = <int>[600, 500, 100];
static DataBase db = new DataBase(); static DataBase db = new DataBase();
static Widget3000 affichageSeries =new Widget3000(db.getlistSeries()); static Widget3000 affichageSeries =new Widget3000(list: db.getlistSeries());
static Widget3000 affichageGames =new Widget3000(db.getlistGames()); static Widget3000 affichageGames ;//=new Widget3000(list: db.getlistGames());
static List<Widget> _widgetOptions = <Widget>[ static List<Widget> _widgetOptions = <Widget>[
Text("Bienvenue dans votre Médiathèque",textAlign: TextAlign.center, style: GoogleFonts.montserrat(textStyle: TextStyle(fontSize: 40,color: Colors.blue))), Text("Bienvenue dans votre Médiathèque",textAlign: TextAlign.center, style: GoogleFonts.montserrat(textStyle: TextStyle(fontSize: 40,color: Colors.blue))),
affichageSeries.getThisFuckingWidget(), affichageSeries,
affichageGames.getThisFuckingWidget(), affichageGames,
Text ( Text (
'Mes favoris', 'Mes favoris',
style: optionStyle, style: optionStyle,
...@@ -94,7 +94,7 @@ class _MyHomePageState extends State<MyHomePage> { ...@@ -94,7 +94,7 @@ class _MyHomePageState extends State<MyHomePage> {
), ),
BottomNavigationBarItem( BottomNavigationBarItem(
icon: Icon(Icons.favorite_border_rounded), icon: Icon(Icons.star_outline_outlined),
label: 'Mes favoris', label: 'Mes favoris',
backgroundColor: Colors.blue backgroundColor: Colors.blue
), ),
...@@ -103,9 +103,7 @@ class _MyHomePageState extends State<MyHomePage> { ...@@ -103,9 +103,7 @@ class _MyHomePageState extends State<MyHomePage> {
currentIndex: _selectedIndex, currentIndex: _selectedIndex,
selectedItemColor: Colors.white, selectedItemColor: Colors.white,
onTap: _onItemTapped,), onTap: _onItemTapped,),
floatingActionButton: FloatingActionButton( // This trailing comma makes auto-formatting nicer for build methods.
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
); );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment