FluxWater/lib/screens/feedback_screen.dart

120 lines
3.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class FeedbackScreen extends StatefulWidget {
const FeedbackScreen({super.key});
@override
State<FeedbackScreen> createState() => _FeedbackScreenState();
}
class _FeedbackScreenState extends State<FeedbackScreen> {
final TextEditingController _controller = TextEditingController();
bool _isSubmitting = false;
void _submit() async {
if (_controller.text.isEmpty) return;
setState(() => _isSubmitting = true);
await Future.delayed(const Duration(milliseconds: 1500));
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Row(
children: [
const Icon(Icons.favorite, color: Colors.white, size: 20),
const SizedBox(width: 10),
Text(
"Thank you for your warmth!",
style: GoogleFonts.quicksand(fontWeight: FontWeight.bold),
),
],
),
backgroundColor: const Color(0xFFAED581),
behavior: SnackBarBehavior.floating,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
duration: const Duration(milliseconds: 1000),
),
);
await Future.delayed(const Duration(milliseconds: 600));
if (mounted) Navigator.pop(context);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xFFFFFBF0),
appBar: AppBar(
title: Text(
"Feedback",
style: GoogleFonts.nunito(fontWeight: FontWeight.bold),
),
leading: IconButton(
icon: const Icon(Icons.arrow_back_rounded),
onPressed: () => Navigator.pop(context),
),
),
body: Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
children: [
Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(24),
),
child: TextField(
controller: _controller,
maxLines: 6,
decoration: InputDecoration(
hintText: "Tell us what's on your mind...",
hintStyle: GoogleFonts.quicksand(
color: const Color(0xFFD7CCC8),
),
border: InputBorder.none,
),
style: GoogleFonts.quicksand(
color: const Color(0xFF5D4037),
fontSize: 16,
),
),
),
const SizedBox(height: 24),
SizedBox(
width: double.infinity,
height: 56,
child: ElevatedButton(
onPressed: _isSubmitting ? null : _submit,
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xFFAED581),
foregroundColor: Colors.white,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
),
child: _isSubmitting
? const SizedBox(
width: 24,
height: 24,
child: CircularProgressIndicator(
color: Colors.white,
strokeWidth: 2,
),
)
: Text(
"Send Warmth",
style: GoogleFonts.nunito(
fontSize: 18,
fontWeight: FontWeight.bold,
),
),
),
),
],
),
),
);
}
}