Page Essen - Mit Provider
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_nav_bar/google_nav_bar.dart';
|
||||
import 'package:mensaapp/providers/essenProvider.dart';
|
||||
import 'package:mensaapp/providers/pageProvider.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
@@ -17,9 +18,13 @@ class MyApp extends StatelessWidget {
|
||||
providers: [
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => PageProvider(),
|
||||
),
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => EssenProvider(),
|
||||
)
|
||||
],
|
||||
child: MaterialApp(
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: ThemeData(
|
||||
colorScheme: const ColorScheme(
|
||||
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';
|
||||
|
||||
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 double initRating;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return RatingBar.builder(
|
||||
initialRating: 0,
|
||||
initialRating: initRating,
|
||||
minRating: 1,
|
||||
itemSize: 80,
|
||||
itemSize: 60,
|
||||
direction: Axis.horizontal,
|
||||
allowHalfRating: false,
|
||||
itemCount: 5,
|
||||
@@ -23,7 +24,7 @@ class RatingStars extends StatelessWidget {
|
||||
);
|
||||
},
|
||||
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:mensaapp/modules/ratingEmote.dart';
|
||||
import 'package:mensaapp/modules/ratingStars.dart';
|
||||
import 'package:mensaapp/providers/essenProvider.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class PageEssen extends StatelessWidget {
|
||||
const PageEssen({super.key});
|
||||
@@ -9,11 +11,74 @@ class PageEssen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Center(
|
||||
child: Container(
|
||||
width: 600,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
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