Page Essen - Mit Provider
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:google_nav_bar/google_nav_bar.dart';
|
import 'package:google_nav_bar/google_nav_bar.dart';
|
||||||
|
import 'package:mensaapp/providers/essenProvider.dart';
|
||||||
import 'package:mensaapp/providers/pageProvider.dart';
|
import 'package:mensaapp/providers/pageProvider.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
@@ -17,9 +18,13 @@ class MyApp extends StatelessWidget {
|
|||||||
providers: [
|
providers: [
|
||||||
ChangeNotifierProvider(
|
ChangeNotifierProvider(
|
||||||
create: (context) => PageProvider(),
|
create: (context) => PageProvider(),
|
||||||
|
),
|
||||||
|
ChangeNotifierProvider(
|
||||||
|
create: (context) => EssenProvider(),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
|
debugShowCheckedModeBanner: false,
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
colorScheme: const ColorScheme(
|
colorScheme: const ColorScheme(
|
||||||
primary: Color.fromRGBO(236, 92, 61, 1),
|
primary: Color.fromRGBO(236, 92, 61, 1),
|
||||||
|
|||||||
@@ -2,16 +2,17 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
|
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
|
||||||
|
|
||||||
class RatingStars extends StatelessWidget {
|
class RatingStars extends StatelessWidget {
|
||||||
const RatingStars({super.key, required this.onRate});
|
const RatingStars({super.key, required this.onRate, required this.initRating});
|
||||||
|
|
||||||
final Function onRate;
|
final Function onRate;
|
||||||
|
final double initRating;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return RatingBar.builder(
|
return RatingBar.builder(
|
||||||
initialRating: 0,
|
initialRating: initRating,
|
||||||
minRating: 1,
|
minRating: 1,
|
||||||
itemSize: 80,
|
itemSize: 60,
|
||||||
direction: Axis.horizontal,
|
direction: Axis.horizontal,
|
||||||
allowHalfRating: false,
|
allowHalfRating: false,
|
||||||
itemCount: 5,
|
itemCount: 5,
|
||||||
@@ -23,7 +24,7 @@ class RatingStars extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
onRatingUpdate: (rating) {
|
onRatingUpdate: (rating) {
|
||||||
onRate();
|
onRate(rating);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
|
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
|
||||||
import 'package:mensaapp/modules/ratingEmote.dart';
|
import 'package:mensaapp/modules/ratingEmote.dart';
|
||||||
import 'package:mensaapp/modules/ratingStars.dart';
|
import 'package:mensaapp/modules/ratingStars.dart';
|
||||||
|
import 'package:mensaapp/providers/essenProvider.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class PageEssen extends StatelessWidget {
|
class PageEssen extends StatelessWidget {
|
||||||
const PageEssen({super.key});
|
const PageEssen({super.key});
|
||||||
@@ -9,11 +11,74 @@ class PageEssen extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Center(
|
return Center(
|
||||||
|
child: Container(
|
||||||
|
width: 600,
|
||||||
child: Column(
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
RatingStars(onRate: () {})
|
const SizedBox(
|
||||||
|
height: 50,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
const Text(
|
||||||
|
"Geschmack*",
|
||||||
|
style: TextStyle(fontSize: 35),
|
||||||
|
),
|
||||||
|
Consumer<EssenProvider>(
|
||||||
|
builder: (context, essenProvider, child) {
|
||||||
|
return RatingStars(onRate: (value) {
|
||||||
|
essenProvider.setRatingGeschmack(value);
|
||||||
|
}, initRating: essenProvider.ratingGeschmack,);
|
||||||
|
},
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
const Text(
|
||||||
|
"Qualität*",
|
||||||
|
style: TextStyle(fontSize: 35),
|
||||||
|
),
|
||||||
|
Consumer<EssenProvider>(
|
||||||
|
builder: (context, essenProvider, child) {
|
||||||
|
return RatingStars(onRate: (value) {
|
||||||
|
essenProvider.setRatingQuali(value);
|
||||||
|
}, initRating: essenProvider.ratingQuali,);
|
||||||
|
},
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 50,
|
||||||
|
),
|
||||||
|
Consumer<EssenProvider>(
|
||||||
|
builder: (context, essenProvider, child) {
|
||||||
|
return TextFormField(
|
||||||
|
initialValue: essenProvider.freiText,
|
||||||
|
onChanged: (value) {
|
||||||
|
essenProvider.setFreiText(value);
|
||||||
|
},
|
||||||
|
autofocus: false,
|
||||||
|
maxLength: 500,
|
||||||
|
maxLines: 5,
|
||||||
|
decoration: InputDecoration(
|
||||||
|
labelText: "Dein Feedback (optional)",
|
||||||
|
labelStyle: const TextStyle(fontSize: 20),
|
||||||
|
border: OutlineInputBorder(
|
||||||
|
borderRadius: BorderRadius.circular(15)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
style: TextStyle(fontSize: 20),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class EssenProvider extends ChangeNotifier {
|
||||||
|
double ratingGeschmack = 0;
|
||||||
|
double ratingQuali = 0;
|
||||||
|
String freiText = "";
|
||||||
|
|
||||||
|
void setRatingGeschmack(double rating) {
|
||||||
|
ratingGeschmack = rating;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setRatingQuali(double rating) {
|
||||||
|
ratingQuali = rating;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setFreiText(String text) {
|
||||||
|
freiText = text;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user