diff --git a/FeedbackPage.dart b/FeedbackPage.dart new file mode 100644 index 0000000..b330797 --- /dev/null +++ b/FeedbackPage.dart @@ -0,0 +1,433 @@ +import 'dart:io'; +import 'BottomNavPage.dart'; +import 'package:flutter/material.dart'; + + +Color _backgroundColor = const Color.fromARGB(255, 190, 146, 160); + +Color _colorContainerVeryHappy = _backgroundColor; +Color _colorContainerHappy = _backgroundColor; +Color _colorContainerMediumHappy = _backgroundColor; +Color _colorContainerUpset = _backgroundColor; + +// Logic status of priceRange +Map _satisfactionBoolean = { + "VeryHappy": true, + "Happy": false, + "MediumHappy": false, + "Upset": false +}; + +class FormForFeedback extends StatefulWidget { + @override + State createState() { + return FormForFeedbackState(); + } +} + +class FormForFeedbackState extends State { + + final GlobalKey _formKey = GlobalKey(); + + String? value = stdin.readLineSync(); + late Map _satisfactionBoolean; + late String feedback; + + bool check1 = false; + bool check2 = false; + bool check3 = false; + bool check4 = false; + + @override + Widget build(BuildContext context) { + Color buttonColor = const Color.fromARGB(204, 172, 123, 132); + Color pinkBackgroundColor = const Color.fromARGB(255, 240, 229, 229); + Color textColor = Colors.black; + Color appBarColor = Colors.white; + + return Scaffold( + backgroundColor: pinkBackgroundColor, + resizeToAvoidBottomInset: false, //för att undvika RenderFlex overflow när man får upp skrivbordet + appBar: AppBar( + backgroundColor: buttonColor, + title: Row( + + children: [ + FlatButton( + textColor: Colors.white, + onPressed: () => Navigator.push( + context, + MaterialPageRoute(builder: (context) => BottomNavPage()), + ), + + child: Text("Close", + style: TextStyle( + fontSize: 25, + color: appBarColor), + ), + ), + ], + ), + + actions: [ + FlatButton( + textColor: Colors.white, + child: Text("Send feedback", + style: TextStyle( + fontSize: 25, + color: appBarColor), + ), + onPressed: () { + if (_formKey.currentState!.validate()) { + return; + } else { + /*print(Map _satisfactionBoolean); + print(String feedback);*/ + + BottomNavPage(); + //Send to API + } + }, + ), + ], + ), + + body: SafeArea( + child: Center( + child: Column(children: [ + Container( + padding: const EdgeInsets.fromLTRB(80, 20, 80, 0), + child: Text( + 'Give us feedback', + style: TextStyle( + fontSize: 26, + color: textColor, + + ), + ), + ), + + const SizedBox(height: 20), + + Text( + 'What do you think about our app?', + style: TextStyle( + fontSize: 20, + color: textColor, + ), + ), + + const SizedBox(height: 10), + + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Expanded( + child: InkWell( + onTap: () { + setState(() { + pressedEmojiColor("VeryHappy"); + }); + print("Very happy"); + }, + child: Container( + color: _colorContainerVeryHappy, + height: 60, + margin: const EdgeInsets.only(left: 20.0, right: 20.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: const [ + Text( + '😀', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 40, + ),), + ], + ), + ), + ), + ), + + Expanded( + child: InkWell( + onTap: () { + setState(() { + pressedEmojiColor("Happy"); + }); + print("Happy"); + }, + child: Container( + color: _colorContainerHappy, + height: 60, + margin: const EdgeInsets.only(left: 20.0, right: 20.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: const [ + Text( + '🙂', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 40, + ), + ), + ], + ), + ), + ), + ), + + Expanded( + child: InkWell( + onTap: () { + setState(() { + pressedEmojiColor("MediumHappy"); + }); + print("MediumHappy"); + }, + child: Container( + color: _colorContainerMediumHappy, + height: 60, + margin: const EdgeInsets.only(left: 20.0, right: 20.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: const [ + Text( + '😑', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 40, + ), + ), + ], + ), + ), + ), + ), + + + Expanded( + child: InkWell( + onTap: () { + setState(() { + pressedEmojiColor("Upset"); + }); + print("Upset"); + }, + child: Container( + color: _colorContainerUpset, + height: 60, + margin: const EdgeInsets.only(left: 20.0, right: 20.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: const [ + Text( + '😞', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 40, + ), + ), + ], + ), + ), + ), + ), + ], + ), + + const SizedBox(height: 20), + + Text( + 'What is on your mind? 💕', + style: TextStyle( + fontSize: 20, + color: textColor, + ), + ), + + const SizedBox(height: 20), + + + CheckboxListTile( + title: const Text("Compliment"), + value: check1, + onChanged: (newValue) { + setState(() { + + check1 = newValue!; + print("Compliment"); + + if(check4 || check2 || check3){ + check4 = false; + check2 = false; + check3 = false; + } + }); + }, + controlAffinity: ListTileControlAffinity.leading, //lägger checkboxen på vänster sida om texten + + ), + + Column(children: [ + CheckboxListTile( + title: const Text("Complaint"), + value: check2, + onChanged: (newValue) { + setState(() { + + check2 = newValue!; + print("Complaint"); + + if(check1 || check4 || check3){ + check1 = false; + check4 = false; + check3 = false; + } + }); + }, + controlAffinity: ListTileControlAffinity.leading, //lägger checkboxen på vänster sida om texten + + ), + + CheckboxListTile( + title: const Text("Bug"), + value: check3, + onChanged: (newValue) { + setState(() { + + check3 = newValue!; + print("Bug"); + + if(check1 || check2 || check4){ + check1 = false; + check2 = false; + check4 = false; + } + }); + }, + controlAffinity: ListTileControlAffinity.leading, //lägger checkboxen på vänster sida om texten + + ), + + CheckboxListTile( + title: const Text("Mistake in sun accuracy"), + value: check4, + onChanged: (newValue) { + setState(() { + + check4 = newValue!; + print("Mistake in sun accuracy"); + + if(check1 || check2 || check3){ + check1 = false; + check2 = false; + check3 = false; + } + }); + }, + controlAffinity: ListTileControlAffinity.leading, //lägger checkboxen på vänster sida om texten + + ), + + const SizedBox(height: 10), + + Padding( + padding: const EdgeInsets.all(40.0), + child: TextFormField( + decoration: InputDecoration( + contentPadding: const EdgeInsets.all(20.0), + labelText: "Write feedback here...", + fillColor: Colors.white, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5.0), + borderSide: const BorderSide( + ), + ), //fillColor: Colors.green + ), + keyboardType: TextInputType.text, + style: const TextStyle( + ), + ), + ), + ] + ), + ], + ), + ), + ), + ); + } +} + +void pressedEmojiColor (String satisfactionLevel) { + if (satisfactionLevel == "Upset") { + if (_satisfactionBoolean["Upset"] == true) { + _satisfactionBoolean["Upset"] = false; + _colorContainerUpset = _backgroundColor; + } else { + _satisfactionBoolean["Upset"] = true; + _colorContainerUpset = Colors.purple; + + if(_satisfactionBoolean["MediumHappy"] == true || _satisfactionBoolean["Happy"] == true || _satisfactionBoolean["VeryHappy"] == true) { + _satisfactionBoolean["MediumHappy"] == false; + _colorContainerMediumHappy = _backgroundColor; + _satisfactionBoolean["Happy"] == false; + _colorContainerHappy = _backgroundColor; + _satisfactionBoolean["VeryHappy"] == false; + _colorContainerVeryHappy = _backgroundColor; + } + } + } else if (satisfactionLevel == "MediumHappy") { + if (_satisfactionBoolean["MediumHappy"] == true) { + _satisfactionBoolean["MediumHappy"] = false; + _colorContainerMediumHappy = _backgroundColor; + } else { + _satisfactionBoolean["MediumHappy"] = true; + _colorContainerMediumHappy = Colors.purple; + + if(_satisfactionBoolean["Upset"] == true || _satisfactionBoolean["Happy"] == true || _satisfactionBoolean["VeryHappy"] == true) { + _satisfactionBoolean["Upset"] == false; + _colorContainerUpset = _backgroundColor; + _satisfactionBoolean["Happy"] == false; + _colorContainerHappy = _backgroundColor; + _satisfactionBoolean["VeryHappy"] == false; + _colorContainerVeryHappy = _backgroundColor; + } + } + } else if (satisfactionLevel == "Happy") { + if (_satisfactionBoolean["Happy"] == true) { + _satisfactionBoolean["Happy"] = false; + _colorContainerHappy = _backgroundColor; + } else { + _satisfactionBoolean["Happy"] = true; + _colorContainerHappy = Colors.purple; + + if(_satisfactionBoolean["MediumHappy"] == true || _satisfactionBoolean["Upset"] == true || _satisfactionBoolean["VeryHappy"] == true) { + _satisfactionBoolean["MediumHappy"] == false; + _colorContainerMediumHappy = _backgroundColor; + _satisfactionBoolean["Upset"] == false; + _colorContainerUpset = _backgroundColor; + _satisfactionBoolean["VeryHappy"] == false; + _colorContainerVeryHappy = _backgroundColor; + } + } + } else if(satisfactionLevel == "VeryHappy") { + if (_satisfactionBoolean["VeryHappy"] == true) { + _satisfactionBoolean["VeryHappy"] = false; + _colorContainerVeryHappy = _backgroundColor; + } else { + _satisfactionBoolean["VeryHappy"] = true; + _colorContainerVeryHappy = Colors.purple; + + if(_satisfactionBoolean["MediumHappy"] == true || _satisfactionBoolean["Happy"] == true || _satisfactionBoolean["Upset"] == true) { + _satisfactionBoolean["MediumHappy"] == false; + _colorContainerMediumHappy = _backgroundColor; + _satisfactionBoolean["Happy"] == false; + _colorContainerHappy = _backgroundColor; + _satisfactionBoolean["Upset"] == false; + _colorContainerUpset = _backgroundColor; + } + } + } +} \ No newline at end of file